<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Ajaxian » Front Page</title>
	
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<pubDate>Thu, 04 Dec 2008 14:20:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://ajaxian.com/index.xml" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
		<title>Freckle: Time tracking with style</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/474701695/freckle-time-tracking-with-style</link>
		<comments>http://ajaxian.com/archives/freckle-time-tracking-with-style#comments</comments>
		<pubDate>Thu, 04 Dec 2008 14:20:11 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Prototype]]></category>

		<category><![CDATA[Scriptaculous]]></category>

		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5300</guid>
		<description><![CDATA[Thomas Fuchs and Amy Hoy are back with another web site, this time Freckle, a new take on time tracking.
Thomas posted about it on his site and shared that it uses an early build of scripty2 which lead me to peak around on GitHub. It looks nice indeed.
You can see the evidence of Script.aculo.us throughout [...]]]></description>
			<content:encoded><![CDATA[<p>Thomas Fuchs and Amy Hoy are back with another web site, this time <a href="http://letsfreckle.com/">Freckle</a>, a new take on time tracking.</p>
<p>Thomas <a href="http://mir.aculo.us/2008/12/3/freckle-is-live">posted about it on his site</a> and shared that it uses an early build of <a href="http://github.com/madrobby/scripty2/tree/master">scripty2</a> which lead me to peak around on GitHub. It looks nice indeed.</p>
<p>You can see the evidence of Script.aculo.us throughout the UI. The calendar morphs between months as you flip around. Jumping between headers rolls around nicely (e.g. reporting mode from insertion). Inline modal popups. Nicely done.</p>
<p><img src="http://ajaxian.com/wp-content/uploads/freckle.png" alt="" title="Freckle" width="500" height="278" class="alignnone size-full wp-image-5301" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=zI62O"><img src="http://feeds.feedburner.com/~f/ajaxian?i=zI62O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=sLepO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=sLepO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=0Ahfo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=0Ahfo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/freckle-time-tracking-with-style/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/freckle-time-tracking-with-style</feedburner:origLink></item>
		<item>
		<title>HTML 5 Gecko Build</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/474650712/html-5-gecko-build</link>
		<comments>http://ajaxian.com/archives/html-5-gecko-build#comments</comments>
		<pubDate>Thu, 04 Dec 2008 13:22:25 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5298</guid>
		<description><![CDATA[Henri Sivonen has posted an exprimental Gecko build that parses HTML 5:

The level of quality is “It runs and some pages render!” This build is not at all suitable for normal browsing use. Please don’t use it with your usual Firefox profile. There are numerous known issues starting with bogus memory management (leaking everything in [...]]]></description>
			<content:encoded><![CDATA[<p>Henri Sivonen has <a href="http://hsivonen.iki.fi/html5-gecko-build/">posted an exprimental Gecko build that parses HTML 5</a>:</p>
<blockquote><p>
The level of quality is “It runs and some pages render!” This build is not at all suitable for normal browsing use. Please don’t use it with your usual Firefox profile. There are numerous known issues starting with bogus memory management (leaking everything in the parser!), lack of fragment parsing support, lack of quirks mode, HTML elements being represented as DOM nodes that behave like XHTML elements and the integration with CSS layout being inefficient. The baseline Gecko source isn’t synced with the trunk, so the other parts of Gecko don’t have all the latest patches. The parser doesn’t reflect the most recent spec changes. meta element-based encoding declarations and BOM sniffing don’t work.</p>
<p>If a page doesn’t render, try reloading or navigating back and forth.</p>
<p>For background, please refer to a <a href="http://groups.google.com/group/mozilla.dev.platform/msg/35ace94ab1ae1511">recent<br />
newsgroup posting of mine</a>. (Summary: The parser core is mechanically translated from the <a href="http://about.validator.nu/htmlparser/">Validator.nu HTML Parser</a>.)
</p></blockquote>
<p>Sam Ruby <a href="http://intertwingly.net/blog/2008/12/03/HTML5-in-Gecko">talked</a> a little about the implementation:</p>
<blockquote><p>
He starts from a single source, in Java.  The Java code can be compiled to Java byte codes, JavaScript source, or C++ presumably making use of Mozilla libraries for things such as memory management.  If he can do that, it seems to me to be a rather small leap from there to producing C++ using, say, either Ruby or Python libraries for memory management, as well as a thin binding to the language.  C# would also be a reasonable target.</p>
<p>If this could be done, and made available under a liberal license, it could go a long way towards making available consistent and performant implementations of the HTML5 parser algorithm everywhere.
</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=YHDVO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=YHDVO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Bt6sO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Bt6sO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=dYCko"><img src="http://feeds.feedburner.com/~f/ajaxian?i=dYCko" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/html-5-gecko-build/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/html-5-gecko-build</feedburner:origLink></item>
		<item>
		<title>CanvasTurtle</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/474568934/canvasturtle</link>
		<comments>http://ajaxian.com/archives/canvasturtle#comments</comments>
		<pubDate>Thu, 04 Dec 2008 11:15:30 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Canvas]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5265</guid>
		<description><![CDATA[Eiten Suez, author of jMatter, has been up to some fun hacking recently. He just released CanvasTurtle a JavaScript and Canvas version of the old favourite TurtlePascal.
You can build snow flakes with code like this:
PLAIN TEXT
JAVASCRIPT:




&#160;


function side&#40;size, level&#41; &#123;


&#160; &#160; if &#40;level==0&#41; &#123;


&#160; &#160; &#160; &#160; fd&#40;size&#41;;


&#160; &#160; &#160; &#160; return;


&#160; &#160; &#125;


&#160; &#160; side&#40;size/3, [...]]]></description>
			<content:encoded><![CDATA[<p>Eiten Suez, author of jMatter, has been up to some fun hacking recently. He just released <a href="http://u2d.com/turtle_js/index.html">CanvasTurtle</a> a JavaScript and Canvas version of the old favourite <a href="http://www.leeds.ac.uk/jcom/turtle/turtlepascal.htm">TurtlePascal</a>.</p>
<p>You can build snow flakes with code like this:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-2');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-2">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">function</span> side<span style="color:#006600; font-weight:bold;">&#40;</span>size, level<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>level==<span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; fd<span style="color:#006600; font-weight:bold;">&#40;</span>size<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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; side<span style="color:#006600; font-weight:bold;">&#40;</span>size/<span style="color:#800000;">3</span>, level-<span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; lt<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">60</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; side<span style="color:#006600; font-weight:bold;">&#40;</span>size/<span style="color:#800000;">3</span>, level-<span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; rt<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">120</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; side<span style="color:#006600; font-weight:bold;">&#40;</span>size/<span style="color:#800000;">3</span>, level-<span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; lt<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">60</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; side<span style="color:#006600; font-weight:bold;">&#40;</span>size/<span style="color:#800000;">3</span>, level-<span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">function</span> snowflake<span style="color:#006600; font-weight:bold;">&#40;</span>size, level<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">3</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">times</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; side<span style="color:#006600; font-weight:bold;">&#40;</span>size, level<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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; rt<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">120</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; 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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">clean<span style="color:#006600; font-weight:bold;">&#40;</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">lt<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">30</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">setPos<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">0</span>,-<span style="color:#800000;">100</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">snowflake<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">250</span>, <span style="color:#800000;">4</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Or a pretty <a href="http://u2d.com/turtle_js/samples/garden.js">garden like this</a>.</p>
<p><a href="http://u2d.com/turtle_js/index.html"><img src="http://ajaxian.com/wp-content/uploads/canvasturtle.png" alt="" title="canvas turtle" width="500" height="499" class="alignnone size-full wp-image-5266" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=BrNvO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=BrNvO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ipoKO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ipoKO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=PkJso"><img src="http://feeds.feedburner.com/~f/ajaxian?i=PkJso" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/canvasturtle/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/canvasturtle</feedburner:origLink></item>
		<item>
		<title>Project Deploy: Customize project directory</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/474516988/project-deploy-customize-project-directory</link>
		<comments>http://ajaxian.com/archives/project-deploy-customize-project-directory#comments</comments>
		<pubDate>Thu, 04 Dec 2008 10:00:11 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Utility]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5275</guid>
		<description><![CDATA[Project Deploy is a simple Web application that lets you make a few choices on what your Web project needs, and then it generates a directory structure for you:

It offers a couple unique features from other project folder downloads such as customization, valid XHTML, HTML, and CSS, but the most unique is bookmarking.
Deploy*'s bookmarking feature [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://projectdeploy.org/">Project Deploy</a> is a simple Web application that lets you make a few choices on what your Web project needs, and then it generates a directory structure for you:</p>
<blockquote><p>
It offers a couple unique features from other project folder downloads such as customization, valid XHTML, HTML, and CSS, but the most unique is bookmarking.</p>
<p>Deploy*'s bookmarking feature allows the user to go through the form only one time and then bookmarking the next page (deploy.php). When the user returns to that bookmark it instantly generates another .zip folder with all the settings the user had previously entered.</p>
<p>If you have a Mac you could add that bookmark to your dock and it's only a click away. Windows and Linux users could also add the bookmark to their desktop and it will always be right there waiting.
</p></blockquote>
<p>This is just the beginning of course. You could imagine that it would get a whole lot more useful if you could deploy to a cloud and have a project setup for you. Imagine if the options were more like "Give me Rails 2.2 with jQuery." There is room to take this further.</p>
<p><img src="http://ajaxian.com/wp-content/uploads/projectdeploy.png" alt="" title="projectdeploy" width="500" height="528" class="alignnone size-full wp-image-5276" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=fhRQO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=fhRQO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=uV0qO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=uV0qO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=xtaGo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=xtaGo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/project-deploy-customize-project-directory/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/project-deploy-customize-project-directory</feedburner:origLink></item>
		<item>
		<title>Visual Event: See where behaviour has been added to a page</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/473597039/visual-event</link>
		<comments>http://ajaxian.com/archives/visual-event#comments</comments>
		<pubDate>Wed, 03 Dec 2008 13:28:50 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Utility]]></category>

		<category><![CDATA[bookmarklet]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5278</guid>
		<description><![CDATA[
Wouldn't it be nice to take a view of your application and see where the behaviour has been added? That is what is shown above, and it is courtesy of Allan Jardine and his new Visual Event tool.
Once you hover over an event, you get to see the code that will run:

Each type of event [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/visualevent.png" alt="" title="visualevent" width="500" height="318" class="alignnone size-full wp-image-5279" /></p>
<p>Wouldn't it be nice to take a view of your application and see where the behaviour has been added? That is what is shown above, and it is courtesy of Allan Jardine and his new <a href="www.sprymedia.co.uk/article/Visual+Event">Visual Event</a> tool.</p>
<p>Once you hover over an event, you get to see the code that will run:</p>
<p><img src="http://ajaxian.com/wp-content/uploads/visualeventshow.png" alt="" title="visualeventshow" width="500" height="185" class="alignnone size-full wp-image-5280" /></p>
<p>Each type of event has its own icon, and all you need to do is use the bookmarklet to run it on any page.</p>
<blockquote><p>
When working with events in Javascript, it is often easy to loose track of what events are subscribed where. This is particularly true if you are using a large number of events, which is typical in a modern interface employing progressive enhancement. Javascript libraries also add another degree of complexity to listeners from a technical point of view, while from a developers point of view they of course can make life much easier! But when things go wrong it can be difficult to trace down why this might be.</p>
<p>It is due to this I've put together a Javascript bookmarklet called Visual Event which visually shows the elements on a page that have events subscribed to them, what those events are and the function that the event would run when triggered. This is primarily intended to assist debugging, but it can also be very interesting and informative to see the subscribed events on other pages.</p>
<p>It turns out that there is no standard method for finding out what listeners have been attached to any particular node in a document, so I've resorted to parsing the event cache stored by the various Javascript libraries. Currently only jQuery and YUI are supported, but additional libraries can be added with ease.
</p></blockquote>
<p>Allan is keen to hear your thoughts. What would you like to see?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=wyPmO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=wyPmO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=lcuMO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=lcuMO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=xF8Jo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=xF8Jo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/visual-event/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/visual-event</feedburner:origLink></item>
		<item>
		<title>Decoupling data and UI layers with PubSub architecture</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/473496056/decoupling-data-and-ui-layers-with-pubsub-architecture</link>
		<comments>http://ajaxian.com/archives/decoupling-data-and-ui-layers-with-pubsub-architecture#comments</comments>
		<pubDate>Wed, 03 Dec 2008 11:18:00 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5285</guid>
		<description><![CDATA[Marcus Westin  (who we featured on finger print) gave a talk at the SF JavaScript meetup on a top that is very interesting:

One common issue in my experience are intricate dependencies between the UI and data models. Decoupling these is a huge benefit with respect to maintainability. The PubSub model is a great way [...]]]></description>
			<content:encoded><![CDATA[<p>Marcus Westin  (<a href="http://ajaxian.com/archives/fingerprint-a-print-for-your-typing">who we featured on finger print</a>) gave a talk at the SF JavaScript meetup on a top that is very interesting:</p>
<blockquote><p>
One common issue in my experience are intricate dependencies between the UI and data models. Decoupling these is a huge benefit with respect to maintainability. The PubSub model is a great way to do it!</p>
<p>I've <a href="http://blog.narcvs.com/?p=43">got a brief post</a> along with a <a href="http://www.marcuswestin.com/Javascript/PubSub/">demo</a> and sample code for a really compact PubSub tool, as well as a short discussion on the somewhat non-trivial javascript that makes it work with minimal code.
</p></blockquote>
<p>The demo app uses code such as:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-4');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-4">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">pubSubBroker.<span style="color: #006600;">subscribe</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'email-open'</span>, gData, <span style="color: #3366CC;">'onRead'</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">pubSubBroker.<span style="color: #006600;">subscribe</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'email-open'</span>, gUI, <span style="color: #3366CC;">'markEmail'</span>, <span style="color: #003366; font-weight: bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> email = <span style="color:#006600; font-weight:bold;">&#123;</span>title:<span style="color: #3366CC;">'Test email'</span>, id:<span style="color:#800000;">1</span>, body:<span style="color: #3366CC;">'Test body'</span><span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">//This will call both gData.onRead(email) and gUI.markEmail(true, email);</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">pubSubBroker.<span style="color: #006600;">publish</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'email-arrive'</span>, email<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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Marcus then goes through the <a href="http://www.marcuswestin.com/Javascript/PubSub/PubSubBroker.js">PubSubBroker</a> code itself.</p>
<p>I am a big fan of pubsub app development. I have <a href="http://ajaxian.com/archives/enjoying-the-observer-pattern-with-custom-events">talked about this wrt custom events in the past</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=C5XuO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=C5XuO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=IkkOO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=IkkOO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=5jOso"><img src="http://feeds.feedburner.com/~f/ajaxian?i=5jOso" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/decoupling-data-and-ui-layers-with-pubsub-architecture/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/decoupling-data-and-ui-layers-with-pubsub-architecture</feedburner:origLink></item>
		<item>
		<title>A great example of sharing; Sizzle Engine in Dojo Foundation</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/473256788/a-great-example-of-sharing-sizzle-engine-in-dojo-foundation</link>
		<comments>http://ajaxian.com/archives/a-great-example-of-sharing-sizzle-engine-in-dojo-foundation#comments</comments>
		<pubDate>Wed, 03 Dec 2008 05:58:08 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[Dojo]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Library]]></category>

		<category><![CDATA[Prototype]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5293</guid>
		<description><![CDATA[Voting has started in Dojo land to take in John Resig's Sizzle next-gem CSS selector engine.
This is incredibly exciting, as it shows how Ajax libraries are working together more and more. Instead of reinventing the wheel in different ways for each project, is it possible to find some core pieces that can be nicely shared? [...]]]></description>
			<content:encoded><![CDATA[<p>Voting has started in Dojo land to take in John Resig's <a href="http://github.com/jeresig/sizzle/tree/master">Sizzle</a> next-gem CSS selector engine.</p>
<p>This is incredibly exciting, as it shows how Ajax libraries are working together more and more. Instead of reinventing the wheel in different ways for each project, is it possible to find some core pieces that can be nicely shared? Of course, if our world was nicer and we could share code by linking in a nice way maybe this would happen more.</p>
<p>As I mentioned in my thanksgiving note, the work that the Ajax library developers do is hugely important and impactful, and having them work together can only be great news.</p>
<p>Take a look at this public email to the Dojo Foundation on the vote:</p>
<blockquote><p>
<b>Overview</b></p>
<p>The Sizzle project is a JavaScript library for performing selections<br />
across a DOM tree using CSS selectors. The library is designed to be<br />
standalone (have no external dependencies), lightweight, fast, and<br />
extensible. This culminates in a library that is perfectly suited for<br />
integration into other libraries. While it's feasible that a developer<br />
may use Sizzle directly the target audience for it is other library<br />
authors.</p>
<p>The code for Sizzle can be found in the following Git repository:<br />
  <a href="http://github.com/jeresig/sizzle/tree/master">http://github.com/jeresig/sizzle/tree/master</a></p>
<p>All of the code for the project has been written by John Resig and is<br />
released under an MIT license. There are some patches pending from<br />
some other contributors (namely Prototype).</p>
<p>Right now the following libraries are adopting or are looking to adopt<br />
Sizzle as their primary CSS selector engine:</p>
<ul>
<li><a href="http://jquery.com/">jQuery</a></li>
<li><a href="http://prototypejs.org/">Prototype</a></li>
<li><a href="http://dojotoolkit.org/">Dojo</a></li>
<li><a href="http://www.mochikit.com/">MochiKit</a></li>
<li><a href="http://tinymce.moxiecode.com/">TinyMCE</a></li>
<li><a href="http://beebole.com/pure/">PURE</a></li>
<li><a href="http://blogs.sun.com/greimer/entry/reglib_javascript_library_now_available">reglib</a></li>
<li><a href="http://haxe.org/">Haxe</a></li>
</ul>
<p>It's likely that Sizzle will become the unified engine behind a<br />
majority of the JavaScript libraries on the market (if not in numbers<br />
then certainly in market share).</p>
<p>The project is owned by John Resig who will serve as BDFL/Project lead<br />
if the project is accepted. There is no formal voting process, as of<br />
yet, but it's likely that one will come about, considering the number of<br />
projects using the codebase.</p>
<p>If the project is accepted to the foundation then all contributors to<br />
the project will be required to have a CLA and follow the policies of<br />
the Dojo foundation.</p>
<p><b>It's very likely that Sizzle will eventually expand into other areas<br />
of JavaScript libraries (such as DOM manipulation and event binding).</b>
</p></blockquote>
<p>That last line excites me too!  It is interesting to see this happen in the Dojo Foundation. Remember, Dojo was founded out of toolkits coming together to aggregate forces. Kudos to everyone involved, and good luck!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=dEO2O"><img src="http://feeds.feedburner.com/~f/ajaxian?i=dEO2O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=LDhHO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=LDhHO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=a85Oo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=a85Oo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/a-great-example-of-sharing-sizzle-engine-in-dojo-foundation/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/a-great-example-of-sharing-sizzle-engine-in-dojo-foundation</feedburner:origLink></item>
		<item>
		<title>SmartGWT 1.0: Huge open source widget set and more</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/473273186/smartgwt</link>
		<comments>http://ajaxian.com/archives/smartgwt#comments</comments>
		<pubDate>Wed, 03 Dec 2008 05:52:35 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[GWT]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Toolkit]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5282</guid>
		<description><![CDATA[You may remember Sanjiv Jivan as the GWT-Ext developer that changed over the debacle. He then went on to start work on a GWT version of SmartClient libraries and has now released SmartGWT 1.0.
It is a tour de force of not only a huge widget library, but he explains how it is much more:

So what's [...]]]></description>
			<content:encoded><![CDATA[<p>You may remember Sanjiv Jivan as the GWT-Ext developer that <a href="http://www.jroller.com/comments/sjivan/Weblog/update_on_future_direction_of1">changed over the debacle</a>. He then went on to start work on a GWT version of SmartClient libraries and has now <a href="http://www.jroller.com/sjivan/entry/smartgwt_1_0_released">released SmartGWT 1.0</a>.</p>
<p>It is a tour de force of not only a huge widget library, but he explains how it is much more:</p>
<blockquote><p>
So what's so smart about SmartGWT? Let me try to explain. SmartGWT is not just another Widget library. While most Ajax frameworks focus primarily on presentation and displaying mostly read-only data, either local or via XML / JSON, SmartClient was built with server side integration in mind. Most enterprise applications are not just about about data presentation, but about being able to propagate data changes made by the user to the backend. So while its tempting to use library X that has a cool tree widget, it's not until you actually try to use it your application that you encounter the real world hard problems. For example, how do you take data from your business objects on the server to not only display in a tree widget, but also be able to update your data model when, say, the user reorders the tree nodes or make edits / deletes in the UI. How do you display hierarchical data where nodes may have hundreds of children? And so on..</p>
<p>Most Ajax frameworks stop short and leave it up to the user to manage state on the client side and propagating the changes to the server. This is not a trivial problem! Over the past few years UI widget libraries have improved significantly and there are now various options available to users. Simply put, having good looking widgets is not the hard problem today. In addition to having good looking widgets, having end-to-end integration of the UI components with the backend is the hard problem. It's this 20% of the functionality that takes 80% of the time in building most enterprise applications.
</p></blockquote>
<p>The <a href="http://www.smartclient.com/smartgwt/showcase/">showcase</a> will give you a good feel for what is out there, and it contains some interesting items including:</p>
<ul>
<li><a href="http://www.smartclient.com/smartgwt/showcase/#featured_miller_columns">Miller Columns</a>: The ColumnTree provides an alternate navigation paradigm for Tree data, sometimes called "Miller Columns" and seen in iTunes</li>
<li><a href="http://www.smartclient.com/smartgwt/showcase/#featured_nested_grid">Nested Grid</a>: A convenient way to display 1-n relationships</li>
<li><a href="http://www.smartclient.com/smartgwt/showcase/#featured_print_grid">Printable Views</a>: SmartGWT supports printable views of its components.</li>
<li><a href="http://www.smartclient.com/smartgwt/showcase/#featured_filter_builder_grid">Advanced Filter Builder</a>: a databound filter builder. </li>
<li><a href="http://www.smartclient.com/smartgwt/showcase/#featured_dropdown_grid_category">Tile View</a>: Representation of data as "tiles". Again, TileGrid supports data binding so sort / filter and edits can be easily performed.</li>
<li>Calendars : A Google Calendar like widget that supports databinding so edits and drag drop changes can easily be propgated to the server for persisting.</li>
<li>TreeGrid : Supports multiple columns, editing, column locking, lazy loading and more. </li>
<li><a href="http://www.smartclient.com/smartgwt/showcase/#featured_grid_live">Live Grid / Tree</a>: Grid / Tree virtual scrolling or live grid</li>
</ul>
<p><img src="http://ajaxian.com/wp-content/uploads/smartgwt.png" alt="" title="smartgwt" width="500" height="415" class="alignnone size-full wp-image-5283" /></p>
<p>Really amazing work. Sanjiv recently had a <a href="http://www.infoq.com/news/2008/11/smartgwt ">Q&#038;A session with InfoQ</a> where he talks about the approach taken in developing SmartGWT and the his thoughts on the differences between SmartClient and Ext.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=XVybO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=XVybO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=INzAO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=INzAO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=c67wo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=c67wo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/smartgwt/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/smartgwt</feedburner:origLink></item>
		<item>
		<title>HTML 5: Integrating HTTP authentication with HTML forms</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/472389767/integrating-http-authentication-with-html-forms</link>
		<comments>http://ajaxian.com/archives/integrating-http-authentication-with-html-forms#comments</comments>
		<pubDate>Tue, 02 Dec 2008 11:54:45 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[HTML]]></category>

		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5273</guid>
		<description><![CDATA[Mark Pilgrim has a new This Week in HTML 5 that features a bit new proposal for integrating HTTP authentication with HTML forms.

A common use for forms is user authentication. To indicate that
  an HTTP URL requires authentication through such a form
  before use, the HTTP 401 response code with a WWW-Authenticate challenge [...]]]></description>
			<content:encoded><![CDATA[<p>Mark Pilgrim has a new <a href="http://blog.whatwg.org/this-week-in-html-5-episode-14">This Week in HTML 5</a> that features a bit new proposal for <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#login-forms">integrating HTTP authentication with HTML forms</a>.</p>
<blockquote cite="http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#login-forms">
<p>A common use for forms is user authentication. To indicate that<br />
  an HTTP <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/#url">URL</a> requires authentication through such a form<br />
  before use, the HTTP 401 response code with a <code title="">WWW-Authenticate</code> challenge "<code title="">HTML</code>" may be used.</p>
<p>For this authentication scheme, the framework defined in RFC2617<br />
  is used as follows. <a href="http://www.whatwg.org/specs/web-apps/current-work/#refsRFC2617">[RFC2617]</a></p>
<pre><dfn id="bnf-formauth-challenge" title="bnf-formauth-challenge">challenge</dfn> = "<code title="">HTML</code>" [ <a href="http://www.whatwg.org/specs/web-apps/current-work/#bnf-formauth-form" title="bnf-formauth-form">form</a> ]

<dfn id="bnf-formauth-form" title="bnf-formauth-form">form</dfn>      = "<code title="">form</code>" "<code title="">=</code>" <a href="http://www.whatwg.org/specs/web-apps/current-work/#bnf-formauth-form-name" title="bnf-formauth-form-name">form-name</a>
<dfn id="bnf-formauth-form-name" title="bnf-formauth-form-name">form-name</dfn> = quoted-string</pre>
<p>The <a href="http://www.whatwg.org/specs/web-apps/current-work/#bnf-formauth-form" title="bnf-formauth-form">form</a> parameter, if<br />
  present, indicates that the first <code><a href="http://www.whatwg.org/specs/web-apps/current-work/#the-form-element">form</a></code> element in the<br />
  entity body whose <a href="http://www.whatwg.org/specs/web-apps/current-work/#attr-form-name" title="attr-form-name">name</a> is the<br />
  specified string, in <a href="http://www.whatwg.org/specs/web-apps/current-work/#tree-order">tree order</a>, if any, is the login<br />
  form. If the parameter is omitted, then the first <code><a href="http://www.whatwg.org/specs/web-apps/current-work/#the-form-element">form</a></code><br />
  element in the entity body, in <a href="http://www.whatwg.org/specs/web-apps/current-work/#tree-order">tree order</a>, if any, is<br />
  the login form.</p>
<p>There is no <code title="">credentials</code> production for this<br />
  scheme because the login information is to be sent as a normal form<br />
  submission and not using the <code title="">Authorization</code><br />
  HTTP header.</p>
</blockquote>
<p>Mark then goes on to say:</p>
<blockquote><p>
This idea has been kicked around for more than a decade.  Microsoft wrote <a href="http://www.w3.org/TR/NOTE-authentform">User Agent Authentication Forms</a> in 1999.  Mark Nottingham <a href="http://www.mnot.net/blog/2004/08/26/form_auth">asked the WHATWG to investigate the idea</a> in 2004.  Better late than never, Ian Hickson <a href="http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2008-November/017413.html">summarizes the feedback to date</a>.  No doubt this new proposal will generate further discussion.  No browsers currently support this proposal.
</p></blockquote>
<p>The idea makes total sense to me. The old HTTP BASIC style of authentication is a dying bread due to the annoying popup style and implementation. It needs a shake up, don't you think?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=4jb1O"><img src="http://feeds.feedburner.com/~f/ajaxian?i=4jb1O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=LL4LO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=LL4LO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=d9lbo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=d9lbo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/integrating-http-authentication-with-html-forms/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/integrating-http-authentication-with-html-forms</feedburner:origLink></item>
		<item>
		<title>Implementing super in JavaScript</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/472382769/super-js</link>
		<comments>http://ajaxian.com/archives/super-js#comments</comments>
		<pubDate>Tue, 02 Dec 2008 11:43:40 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5271</guid>
		<description><![CDATA[Erik Arvidsson seems to be having fun going through exersizes getting JavaScript to do something his way. The latest little foray is Using catch-alls to implement super.
Firstly, catch-alls are the ability to use the SpiderMonkey only __noSuchMethod__ meta programming trick. The good news is that this seems to be coming to ECMAScript Harmony (I hope [...]]]></description>
			<content:encoded><![CDATA[<p>Erik Arvidsson seems to be having fun going through exersizes getting JavaScript to do something his way. The latest little foray is <a href="http://erik.eae.net/archives/2008/11/27/12.54.49/">Using catch-alls to implement super</a>.</p>
<p>Firstly, catch-alls are the ability to use the SpiderMonkey only <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/noSuchMethod">__noSuchMethod__</a> meta programming trick. The good news is that this seems to be coming to ECMAScript Harmony (I hope we here how the ECMA working group meeting went in Kona soon!).</p>
<p>Erik used this trick to build a <code>createSuper</code> method:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-6');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-6">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">function</span> createSuper<span style="color:#006600; font-weight:bold;">&#40;</span>self, opt_constr<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #003366; font-weight: bold;">var</span> constr = opt_constr || arguments.<span style="color: #006600;">callee</span>.<span style="color: #006600;">caller</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #003366; font-weight: bold;">function</span> supr<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> constr.<span style="color: #006600;">superClass</span>.<span style="color: #006600;">apply</span><span style="color:#006600; font-weight:bold;">&#40;</span>self, arguments<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; supr.__noSuchMethod__ = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066;">name</span>, args<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> constr.<span style="color: #006600;">superClass</span>.<span style="color: #006600;">prototype</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #000066;">name</span><span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color: #3366CC;">'function'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> constr.<span style="color: #006600;">superClass</span>.<span style="color: #006600;">prototype</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #000066;">name</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">apply</span><span style="color:#006600; font-weight:bold;">&#40;</span>self, args<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">throw</span> Error<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'No such method, '</span> + <span style="color: #000066;">name</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000066; font-weight: bold;">return</span> supr;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>which you can then use via <code>var supr = createSuper(this);</code></p>
<p>Of course, as Erik points out, you can just use <code>FooClass.superClass.method.call(this, …);</code></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=xaulO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=xaulO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=JNH3O"><img src="http://feeds.feedburner.com/~f/ajaxian?i=JNH3O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ur3Lo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ur3Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/super-js/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/super-js</feedburner:origLink></item>
		<item>
		<title>S5 Presentations with CSS Transitions</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/472341926/s5-presentations-with-css-transitions</link>
		<comments>http://ajaxian.com/archives/s5-presentations-with-css-transitions#comments</comments>
		<pubDate>Tue, 02 Dec 2008 10:48:28 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[CSS]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5258</guid>
		<description><![CDATA[Shawn Lauriat hacked CSS Transition support into the presentation app S5. Now he has posted slides from one of his talks that uses the functionality.
See how you can add fun (or annoying ;) transitions to your S5 prezos, even on the iPhone:

]]></description>
			<content:encoded><![CDATA[<p>Shawn Lauriat hacked <a href="http://www.frozen-o.com/blog/2008/09/s5-with-css-slide-transitions-in-webkit.html">CSS Transition support into the presentation app S5</a>. Now he has <a href="http://www.frozen-o.com/blog/2008/11/enterprise-guts-slides-up-with-css.html">posted slides from one of his talks that uses the functionality</a>.</p>
<p>See how you can add fun (or annoying ;) transitions to your S5 prezos, even on the iPhone:</p>
<p><object width="320" height="256" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab"><param name="src" value="http://frozen-o.com/misc/enterpriseguts/enterprisegutsiphone.mov"></param><param name="autoplay" value="false"></param><param name="controller" value="true"><embed src="http://frozen-o.com/misc/enterpriseguts/enterprisegutsiphone.mov" width="320" height="256" autoplay="false" controller="true" pluginspage="http://www.apple.com/quicktime/download/"></embed></param></object></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=1V5WO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=1V5WO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=4SMIO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=4SMIO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=PAyUo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=PAyUo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/s5-presentations-with-css-transitions/feed</wfw:commentRss>

		<feedburner:origLink>http://ajaxian.com/archives/s5-presentations-with-css-transitions</feedburner:origLink><enclosure url="http://feeds.feedburner.com/~r/ajaxian/~5/472341927/enterprisegutsiphone.mov" length="444276" type="video/quicktime" /><feedburner:origEnclosureLink>http://frozen-o.com/misc/enterpriseguts/enterprisegutsiphone.mov</feedburner:origEnclosureLink></item>
		<item>
		<title>XBug: New JavaScript Debugger</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/472296836/xbug</link>
		<comments>http://ajaxian.com/archives/xbug#comments</comments>
		<pubDate>Tue, 02 Dec 2008 09:39:57 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Debugging]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Utility]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5288</guid>
		<description><![CDATA[
Greg Salisbury has released a new JavaScript debugger called XBug that "currently runs on the Windows XP/Vista platform, but, it can also be used to debug webpages on Windows or Linux servers. It's cross-browser compatible, and works with Chrome, Firefox 2/3, IE 6/7, and Safari 3. After selecting your web page, you can then trace [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.xbug.co.uk/images/codeWindow.png" /></p>
<p>Greg Salisbury has released a new JavaScript debugger called <a href="http://www.xbug.co.uk/">XBug</a> that "currently runs on the Windows XP/Vista platform, but, it can also be used to debug webpages on Windows or Linux servers. It's cross-browser compatible, and works with Chrome, Firefox 2/3, IE 6/7, and Safari 3. After selecting your web page, you can then trace or step through your javascript code in real-time. Set breakpoints, and watchpoints in a separate code window, see a trace log while your code is executing, inspect variables, and even get an indexed list of the functions/methods in your scripts."</p>
<p>Fancy a try? Grab the <a href="http://www.xbug.co.uk/downloads/xbug.msi">msi</a> and get to it.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=zH8UO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=zH8UO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=i6jUO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=i6jUO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Os0bo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Os0bo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/xbug/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/xbug</feedburner:origLink></item>
		<item>
		<title>iPod Engraving Gallery and Leopard.Next DHTML</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/471306563/ipod-engraving-gallery</link>
		<comments>http://ajaxian.com/archives/ipod-engraving-gallery#comments</comments>
		<pubDate>Mon, 01 Dec 2008 13:38:24 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5255</guid>
		<description><![CDATA[
I noticed the new iPod Engraving Gallery that is a nice use of Coherent to show a slick UI with engraving suggestions.

I was also talking to a friend that has leopard beta bits and he was playing with an updated Dashcode. It appears that the Coherent library is now used for the widgets too. Yay [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://store.apple.com/us/engrave/MB748LL/A?mco=MTcyODA4Nw"><img src="http://ajaxian.com/wp-content/uploads/ipodengraving.png" alt="" title="ipod engraving" width="500" height="316" class="alignnone size-full wp-image-5256" /></a></p>
<p>I noticed the new <a href="http://store.apple.com/us/engrave/MB748LL/A?mco=MTcyODA4Nw">iPod Engraving Gallery</a> that is a nice use of Coherent to show a slick UI with engraving suggestions.</p>
<p><img src="http://developer.apple.com/tools/images/dashcodeicon.jpg" style="float: right; padding: 8px;" /></p>
<p>I was also talking to a friend that has leopard beta bits and he was playing with an updated <a href="http://developer.apple.com/tools/dashcode/">Dashcode</a>. It appears that the Coherent library is now used for the widgets too. Yay data binding!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=3vOJO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=3vOJO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=zqC3O"><img src="http://feeds.feedburner.com/~f/ajaxian?i=zqC3O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=LwWto"><img src="http://feeds.feedburner.com/~f/ajaxian?i=LwWto" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/ipod-engraving-gallery/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/ipod-engraving-gallery</feedburner:origLink></item>
		<item>
		<title>AbstractCanvas: HTML Canvas and Java2D in one fell swoop</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/471235398/abstractcanvas</link>
		<comments>http://ajaxian.com/archives/abstractcanvas#comments</comments>
		<pubDate>Mon, 01 Dec 2008 12:09:34 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Canvas]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[GWT]]></category>

		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5262</guid>
		<description><![CDATA[
Rodrigo Reyes has announced a new project called AbstractCanvas, a GWT project that sits on top of HTML Canvas and Java2D.
The same code can thus run in the browser, or on the server.
You can then write code such as:
PLAIN TEXT
JAVA:




&#160;


&#160;VerticalPanel vPanel = new VerticalPanel&#40;&#41;;


&#160;


&#160;CanvasPanelExt canvas1 = new CanvasPanelExt&#40;300,150&#41;;


&#160;


&#160;canvas1.setFillStyle&#40;Color.WHITE&#41;;


&#160;canvas1.setGlobalAlpha&#40;1.0&#41;;


&#160;canvas1.fillRect&#40;0, 0, canvas1.getCoordWidth&#40;&#41;, canvas1.getCoordHeight&#40;&#41;&#41;;


&#160; &#160; &#160; &#160; 


&#160;canvas1.addCanvasPainter&#40;new [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://kornr.net/abstractcanvas/net.kornr.canvaschart.Demo/Demo.html"><img src="http://ajaxian.com/wp-content/uploads/abstractcanvas.png" alt="" title="Abstract Canvas" width="500" height="300" class="alignnone size-full wp-image-5263" /></a></p>
<p>Rodrigo Reyes has <a href="http://blog.kornr.net/index.php/2008/11/27/gwt-one-step-above-the-html-canvas">announced</a> a new project called <a href="http://code.google.com/p/abstractcanvas/">AbstractCanvas</a>, a GWT project that sits on top of HTML Canvas and Java2D.</p>
<p>The same code can thus run in the browser, or on the server.</p>
<p>You can then write code such as:</p>
<div class="igBar"><a href="javascript:showCodeTxt('java-8');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVA:</span>
<div id="java-8">
<div class="java">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;VerticalPanel vPanel = <span style="color: #000000; font-weight: bold;">new</span> VerticalPanel<span style="color:#006600; font-weight:bold;">&#40;</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;CanvasPanelExt canvas1 = <span style="color: #000000; font-weight: bold;">new</span> CanvasPanelExt<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">300</span>,<span style="color:#800000;">150</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;canvas1.<span style="color: #006600;">setFillStyle</span><span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AColor+java.sun.com&#038;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Color</span></a>.<span style="color: #006600;">WHITE</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;canvas1.<span style="color: #006600;">setGlobalAlpha</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">1</span>.<span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;canvas1.<span style="color: #006600;">fillRect</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">0</span>, <span style="color:#800000;">0</span>, canvas1.<span style="color: #006600;">getCoordWidth</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>, canvas1.<span style="color: #006600;">getCoordHeight</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;canvas1.<span style="color: #006600;">addCanvasPainter</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ColorTest<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #808080; font-style: italic;">// &lt;- Note the use of CanvasPainter here</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;canvas1.<span style="color: #006600;">addCanvasPainter</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> PathTest<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp; &nbsp; &nbsp;&lt;- and here</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; 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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;vPanel.<span style="color: #006600;">add</span><span style="color:#006600; font-weight:bold;">&#40;</span>canvas1<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=22svO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=22svO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Ks1uO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Ks1uO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=3R3Bo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=3R3Bo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/abstractcanvas/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/abstractcanvas</feedburner:origLink></item>
		<item>
		<title>Kojax? Huh?</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/471093225/kojax</link>
		<comments>http://ajaxian.com/archives/kojax#comments</comments>
		<pubDate>Mon, 01 Dec 2008 09:00:13 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5260</guid>
		<description><![CDATA[Mary Jo Foley has an article called Move over, Ajax. Here comes Microsoft’s ‘Kojax’. The thing is, I don't get what it actually is:

Kojax is a mobile development platform, according to my sources, that will allow Microsoft- — and third-party-developed — applets run in an Ajax-like way, using a combination of Visual Studio tools and [...]]]></description>
			<content:encoded><![CDATA[<p>Mary Jo Foley has an article called <a href="http://blogs.zdnet.com/microsoft/?p=1741">Move over, Ajax. Here comes Microsoft’s ‘Kojax’</a>. The thing is, I don't get what it actually is:</p>
<blockquote><p>
Kojax is a mobile development platform, according to my sources, that will allow Microsoft- — and third-party-developed — applets run in an Ajax-like way, using a combination of Visual Studio tools and JavaScript, on Java-based mobile phones.
</p></blockquote>
<p>Erm, is this just JavaScript running on the JVM? This is the big deal instead of the PDC touted "write using .NET and deploy everywhere"?</p>
<p>Mary goes on:</p>
<blockquote><p>
What kinds of mobile applets are we talking about here? Nothing iPhone-like, such as restaurant reviews or “I am Rich.” More like a virtual wallet for online payments, a group messaging service and photo-sharing app — things that build on top of Windows Live for Mobile services. Some of these Kojax-based applets will ad-funded; others will likely be transaction- and subscription-based.</p>
<p>Another interesting part of the Kojax tips I’ve received: Microsoft allegedly is aiming its Kojax applet plans primarily at users in emerging markets.</p>
<p>The Kojax work may or may not be related to a recent Unlimited Potential initiative about which I recently heard, known as “Mobile First.” Mobile First is all about users whose first Microsoft-related experience tends to be in the mobile-phone, rather than the PC, realm. (Given Microsoft’s recent acknowledgment that China Mobile will offer the first handsets running Internet Explorer 6, it’s not far-fetched to see how/why Microsoft is putting so much emphasis on emerging-market customers.)</p>
<p>I haven’t been able to glean much more about Kojax and Microsoft’s mobile applet plans. So before you ask, I don’t know what stage Kojax is at: It could be anything from a glimmer in a Microsoft development team’s eye, or something in private beta.
</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=bscDO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=bscDO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=nVQgO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=nVQgO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=pxnuo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=pxnuo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/kojax/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/kojax</feedburner:origLink></item>
		<item>
		<title>Chromium Extensions Design Doc</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/470981233/chromium-extensions</link>
		<comments>http://ajaxian.com/archives/chromium-extensions#comments</comments>
		<pubDate>Mon, 01 Dec 2008 06:28:45 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Chrome]]></category>

		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5268</guid>
		<description><![CDATA[Aaron Boodman posted about the new design document that discusses what the extension system should look like in Chromium and thus Google Chrome:

Chromium can't be everything to all people. People use web browsers in a variety of environments and for a wide variety of jobs. Personal tastes and needs vary widely from one user to [...]]]></description>
			<content:encoded><![CDATA[<p>Aaron Boodman <a href="http://www.aaronboodman.com/2008/11/extensions-in-chromium.html">posted</a> about the new <a href="http://dev.chromium.org/developers/design-documents/extensions">design document</a> that discusses what the extension system should look like in Chromium and thus Google Chrome:</p>
<blockquote>
<p>Chromium can't be everything to all people. People use web browsers in a variety of environments and for a wide variety of jobs. Personal tastes and needs vary widely from one user to the next. The feature needs of one person often conflict directly with those of another. Further, one of the design goals of Chromium is to have a minimal light-weight user interface, which itself conflicts with adding lots of features.</p>
<p>User-created extensions have been proposed to solve these problems:</p>
<ul>
<li>The addition of features that have specific or limited appeal ("that would be great as an extension").</li>
<li>Users coming from other browsers who are used to certain extensions that they can't live without.</li>
<li>Bundling partners who would like to add features to Chromium specific to their bundle.</li>
</ul>
</blockquote>
<p>They then define the goals:</p>
<blockquote><p>
An extension system for Chromium should be:</p>
<div>
<ul>
<li><span style="font-weight: bold;">Webby</span></li>
</ul>
<ul>
<li>Developing and using extensions should be very similar to developing and using web pages.</li>
<li>We should reuse the web platform wherever possible instead of creating new proprietary APIs.</li>
<li>Web developers should be able to easily create Chromium extensions.</li>
<li>Installing and using an extension should feel lightweight and simple, like using a web app.</li>
</ul>
<li><span style="font-weight: bold;">Rich</span></li>
<ul>
<li>It should be possible to create extensions as polished as if they had been developed by the Chromium team.</li>
<li>Eventually, it should be possible to implement major chunks of Chromium itself as extensions.</li>
</ul>
<li><span style="font-weight: bold;">General</span></li>
<ul>
<li>There should be only one extension system in Chromium that handles all types of extensibility.</li>
<li>Infrastructure like autoupdate, packaging, and security should be shared.</li>
<li>Even traditional NPAPI plugins should be deployable as extensions.</li>
</ul>
<li><span style="font-weight: bold;">Maintainable</span></li>
<ul>
<li>The system should require low ongoing maintenance from the Chromium team, and minimize potential for forward compatibility issues.</li>
<li>We should not need to disable deployed extensions when we release new versions of Chromium.&nbsp;</li>
</ul>
<li><span style="font-weight: bold;">Stable</span></li>
<ul>
<li>Extensions should not be able to crash or hang the browser process.</li>
<li>Chromium should assign blame to extensions that are overusing resources via tools like the task manager and web inspector.</li>
<li>Poorly behaving extensions should be easy to disable.</li>
</ul>
<li><span style="font-weight: bold;">Secure</span></li>
<ul>
<li>It must not be possible for third-party code to get access to privileged APIs because of the extension system.</li>
<li>Extensions should be given only the privileges they require, not everything by default.</li>
<li>Extensions should run in sandboxed processes so that if they are compromised, they can't access the local machine.</li>
<li>It should be trivial for authors to support secure autoupdates for extensions.</li>
<li>We must be able to blacklist extensions across all Chromium installations.</li>
</ul>
<li><span style="font-weight: bold;">Open</span></li>
<ul>
<li>Extension development must not require use of any Google products or services.</li>
<li>Extensions should work the same in Chromium as in Google Chrome.</li>
</ul>
</div>
</blockquote>
<p>As the new kid on the block, they get to learn from the good and bad of other add on systems (IE, Firefox, etc). What would you like to see? I love the idea of being able to do as much as possible by using the Web platform as it is, and doing things like adding some new APIs, but also additions to CSS and the like versus a new system.</p>
<p>I would also love to see the Chromium folks working with others to start sharing some work here. For example, it would be great to have the vbox/hbox work shared. David Hyatt did a lot of work there back in the day with WebKit already.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=iXITO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=iXITO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=RXXOO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=RXXOO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=lSXvo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=lSXvo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/chromium-extensions/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/chromium-extensions</feedburner:origLink></item>
		<item>
		<title>JavaScript Bra Size Calculator</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/468589474/javascript-bra-size-calculator</link>
		<comments>http://ajaxian.com/archives/javascript-bra-size-calculator#comments</comments>
		<pubDate>Fri, 28 Nov 2008 18:33:22 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Examples]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5253</guid>
		<description><![CDATA[Now this could only fly on a Friday ;)
Ed Spencer has coded up a bra size calculator in JavaScript:

One of the more mesmerizing websites I've worked on recently was for a lingerie boutique in the UK. Aside from the unenviable task of having to look at pictures of women in lingerie all day, I was [...]]]></description>
			<content:encoded><![CDATA[<p>Now this could only fly on a Friday ;)</p>
<p>Ed Spencer has coded up a <a href="http://edspencer.net/2008/11/javascript-bra-size-calculator.html">bra size calculator</a> in JavaScript:</p>
<blockquote><p>
One of the more mesmerizing websites I've worked on recently was for a lingerie boutique in the UK. Aside from the unenviable task of having to look at pictures of women in lingerie all day, I was also forced (forced!) to write a bra size calculator.</p>
<p>The theory behind bra size calculation is arcane and somewhat magical. Understanding of it does not come easily to man nor beast, so it is lucky that I, falling cleanly into neither category, have passed through pain and torment to save you the trouble.
</p></blockquote>
<p>After hours of testing he came up with the <a href="http://honeyslingerieboutique.com/javascripts/calculator.js">BraCalculator</a>:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-10');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-10">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> BraCalculator = <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900; font-style: italic;">/**</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* The string to be returned when the result could not be calculated.&nbsp; Overwrite to change this</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;*/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; unknownString: <span style="color: #3366CC;">"Unknown"</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; 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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; cupSizes: <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #3366CC;">"A"</span>, <span style="color: #3366CC;">"B"</span>, <span style="color: #3366CC;">"C"</span>, <span style="color: #3366CC;">"D"</span>, <span style="color: #3366CC;">"DD"</span>, <span style="color: #3366CC;">"E"</span>, <span style="color: #3366CC;">"EE"</span>, <span style="color: #3366CC;">"F"</span>, <span style="color: #3366CC;">"FF"</span>, <span style="color: #3366CC;">"G"</span>, <span style="color: #3366CC;">"GG"</span>, <span style="color: #3366CC;">"H"</span>, <span style="color: #3366CC;">"HH"</span>, </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">"J"</span>, <span style="color: #3366CC;">"JJ"</span>, <span style="color: #3366CC;">"K"</span>, <span style="color: #3366CC;">"KK"</span>, <span style="color: #3366CC;">"L"</span>, <span style="color: #3366CC;">"LL"</span>, <span style="color: #3366CC;">"M"</span>, <span style="color: #3366CC;">"MM"</span>, <span style="color: #3366CC;">"N"</span>, <span style="color: #3366CC;">"NN"</span><span style="color:#006600; font-weight:bold;">&#93;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900; font-style: italic;">/**</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* Returns the correct bra size for given under bust and over bust measurements</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* @param {Number} underBust The measurement taken under the bust (in inches)</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* @param {Number} overBust The measurement taken over the bust (in inches)</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* @return {String} The correct bra size for the given measurements (e.g. 32C, 40DD, etc)</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;*/</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; calculateSize: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>underBust, overBust<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> bandSize = <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">calculateBandSize</span><span style="color:#006600; font-weight:bold;">&#40;</span>underBust<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> cupSize&nbsp; = <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">calculateCupSize</span><span style="color:#006600; font-weight:bold;">&#40;</span>bandSize, overBust<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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>bandSize &amp;&amp; cupSize<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> bandSize + cupSize;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">unknownString</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; 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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900; font-style: italic;">/**</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* Calculates the correct band size for a given under bust measurement</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* @param {Number} underBust The measurement under the bust</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* @return {Number} The correct band size</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;*/</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; calculateBandSize: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>underBust<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> underBust = parseInt<span style="color:#006600; font-weight:bold;">&#40;</span>underBust, <span style="color:#800000;">10</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> underBust + <span style="color:#006600; font-weight:bold;">&#40;</span>underBust % <span style="color:#800000;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span> + <span style="color:#800000;">2</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; 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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900; font-style: italic;">/**</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* Calculates the Cup size required given the band size and the over bust measurement</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* @param {Number} bandSize The measured band size (should be an even number)</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* @param {Number} overBust The measurement taken over the bust</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;* @return {String} The appropriate alphabetical cup size</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;*/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; calculateCupSize: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>bandSize, overBust<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> bandSize = parseInt<span style="color:#006600; font-weight:bold;">&#40;</span>bandSize, <span style="color:#800000;">10</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> overBust = parseInt<span style="color:#006600; font-weight:bold;">&#40;</span>overBust, <span style="color:#800000;">10</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> diff&nbsp; &nbsp; &nbsp;= overBust - bandSize;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> result&nbsp; &nbsp;= <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">cupSizes</span><span style="color:#006600; font-weight:bold;">&#91;</span>diff<span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//return false if we couldn't lookup a cup size</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> result ? result : <span style="color: #003366; font-weight: bold;">false</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Check it out <a href="http://honeyslingerieboutique.com/fitting">in action</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=AtwXN"><img src="http://feeds.feedburner.com/~f/ajaxian?i=AtwXN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=EtnuN"><img src="http://feeds.feedburner.com/~f/ajaxian?i=EtnuN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=tihkn"><img src="http://feeds.feedburner.com/~f/ajaxian?i=tihkn" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/javascript-bra-size-calculator/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/javascript-bra-size-calculator</feedburner:origLink></item>
		<item>
		<title>Mouse entering and leaving versus over and out</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/468584824/mouse-entering-and-leaving-versus-over-and-out</link>
		<comments>http://ajaxian.com/archives/mouse-entering-and-leaving-versus-over-and-out#comments</comments>
		<pubDate>Fri, 28 Nov 2008 18:26:54 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[HTML]]></category>

		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5251</guid>
		<description><![CDATA[
Greg Reimer is doing really interesting work with reglib and he now has a neutral post on events and how he favours the pattern of mouse enter / leave to mouse over / out.
He shows an example using the pyramid illustrations (as above) and then ends with:

The title of this post is a bit misleading. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogs.sun.com/greimer/resource/zig3.png" /></p>
<p>Greg Reimer is doing really interesting work with reglib and he now has a neutral post on <a href="http://blogs.sun.com/greimer/entry/mouse_over_out_versus_mouse">events</a> and how he favours the pattern of <a href="http://blog.stchur.com/2007/03/15/mouseenter-and-mouseleave-events-for-firefox-and-other-non-ie-browsers/">mouse enter / leave</a> to mouse over / out.</p>
<p>He shows an example using the pyramid illustrations (as above) and then ends with:</p>
<blockquote><p>
The title of this post is a bit misleading. The mouseenter/leave events are never used. It's all still accomplished via mouseover/out, but there's enough information available in the handling element, event.target and event.relatedTarget elements--and their positions relative to each other--to know whether to execute the handler. Since the actual mouseenter/leave events don't bubble, and in any case are IE-only, reglib wants nothing to do with them. This code is checked in to the trunk, and with a little more testing will be released as reglib version 1.0.5.</p>
<p>One thing also, I'd be curious to know if anybody knows of a reason this would be *undesirable* behavior.
</p></blockquote>
<p>What do you think?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=YiK5N"><img src="http://feeds.feedburner.com/~f/ajaxian?i=YiK5N" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=FDPNN"><img src="http://feeds.feedburner.com/~f/ajaxian?i=FDPNN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ZpaHn"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ZpaHn" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/mouse-entering-and-leaving-versus-over-and-out/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/mouse-entering-and-leaving-versus-over-and-out</feedburner:origLink></item>
		<item>
		<title>&lt;!doctype html&gt;</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/468290960/doctype-html</link>
		<comments>http://ajaxian.com/archives/doctype-html#comments</comments>
		<pubDate>Fri, 28 Nov 2008 12:22:00 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5248</guid>
		<description><![CDATA[PLAIN TEXT
HTML:




&#160;


&#60;!doctype html&#62;


&#160;





That is what HTML 5 defines, and Dustin Diaz agrees as he lays down the skinny:

Doctypes have long been in standardista discussions circles. Why to use them. Which one to use. Which one is best. These are all &#60;sarcasm&#62;really fun details&#60;/sarcasm&#62; to get into, but the most important aspect of any doctype is [...]]]></description>
			<content:encoded><![CDATA[<div class="igBar"><a href="javascript:showCodeTxt('html-12');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-12">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>!doctype html&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>That is what HTML 5 defines, and Dustin Diaz <a href="http://www.dustindiaz.com/skinny-on-doctypes/">agrees as he lays down the skinny</a>:</p>
<blockquote><p>
Doctypes have long been in standardista discussions circles. Why to use them. Which one to use. Which one is best. These are all &lt;sarcasm&gt;<strong>really fun details</strong>&lt;/sarcasm&gt; to get into, but the most important aspect of any doctype is simply <em>having one</em>, since without one, you’re stuck in the lovely world of “quirks mode”. If you’re interested in understanding the <a href="http://webdesign.about.com/od/dtds/qt/tipdoctype.htm" title="Actually helpful article on what all those parts in a doctype mean">anatomy of a doctype</a>, then by all means, dive in.</p>
<p>There is really, absolutely no reason you need the rest of the doctype in your declaration unless you’re validating code. Furthermore, it <strong>does not mean</strong> that your page is even invalid. In the end, it puts your webpages into standards mode, which is what really matters. (Plus it’s easy to memorize ;)
<p>Try it out. It will fix your box model in IE6 and clobber all those other funny gotchas when you’re in quirks mode. Cheers.</p>
</blockquote>
<p>Do you concur?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=2YE9N"><img src="http://feeds.feedburner.com/~f/ajaxian?i=2YE9N" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=VwPVN"><img src="http://feeds.feedburner.com/~f/ajaxian?i=VwPVN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=7OQFn"><img src="http://feeds.feedburner.com/~f/ajaxian?i=7OQFn" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/doctype-html/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/doctype-html</feedburner:origLink></item>
		<item>
		<title>SproutCore: Mixins and Talk</title>
		<link>http://feeds.feedburner.com/~r/ajaxian/~3/468208586/sproutcore-mixins-and-talk</link>
		<comments>http://ajaxian.com/archives/sproutcore-mixins-and-talk#comments</comments>
		<pubDate>Fri, 28 Nov 2008 10:07:15 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Library]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5243</guid>
		<description><![CDATA[
If you skip in 20 minutes to the presentation above you will find Charles Jolley talking about SproutCore:

During this presentation I actually built and deployed a small application on stage but the most interesting thing, I think, is the part where I talk about how thick client frameworks like SproutCore change the way you build [...]]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/CWfThAWBO3A&#038;color1=0x3a3a3a&#038;color2=0x999999&#038;hl=en&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/CWfThAWBO3A&#038;color1=0x3a3a3a&#038;color2=0x999999&#038;hl=en&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>If you skip in 20 minutes to the presentation above you will find <a href="http://www.sproutcore.com/2008/11/24/sproutcore-gtug/">Charles Jolley talking about SproutCore</a>:</p>
<blockquote><p>
During this presentation I actually built and deployed a small application on stage but the most interesting thing, I think, is the part where I talk about how thick client frameworks like SproutCore change the way you build your server side as well.  It’s a model I call “microservices.”
</p></blockquote>
<p>SproutCore 1.0 is coming together nicely, and we keep seeing improvements such as <a href="http://github.com/sproutit/sproutcore/wikis/about-mixins">mixin support</a> that allows you to simply:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-14');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">MyApp.<span style="color: #006600;">MyMixin</span> = <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; initMixin: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"mixin inited!"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp; <span style="color: #009900; font-style: italic;">// just for demo</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">MyApp.<span style="color: #006600;">myController</span> = SC.<span style="color: #006600;">Object</span>.<span style="color: #006600;">create</span><span style="color:#006600; font-weight:bold;">&#40;</span>MyApp.<span style="color: #006600;">MyMixin</span>, <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900; font-style: italic;">// other properties</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><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="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// =&gt; &quot;mixin inited!&quot; </span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ajaxian?a=wXUAN"><img src="http://feeds.feedburner.com/~f/ajaxian?i=wXUAN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=xkmON"><img src="http://feeds.feedburner.com/~f/ajaxian?i=xkmON" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=OpU8n"><img src="http://feeds.feedburner.com/~f/ajaxian?i=OpU8n" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/sproutcore-mixins-and-talk/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/sproutcore-mixins-and-talk</feedburner:origLink></item>
	</channel>
</rss>
