<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ajaxian &#187; Python</title>
	<atom:link href="http://ajaxian.com/by/topic/python/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Tue, 22 May 2012 21:45:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
    	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Skulpt: Crazy project that lets your browser parse and run Python</title>
		<link>http://ajaxian.com/archives/skulpt-crazy-project-that-lets-your-browser-parse-and-run-python</link>
		<comments>http://ajaxian.com/archives/skulpt-crazy-project-that-lets-your-browser-parse-and-run-python#comments</comments>
		<pubDate>Thu, 13 Aug 2009 11:59:42 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7230</guid>
		<description><![CDATA[Skulpt is an entirely in-browser implementation of Python. Really. Crazy and cool. You can build an example term like this just via: PLAIN TEXT JAVASCRIPT: &#160; window.addEvent&#40;'domready', function&#40;&#41; &#123; &#160; &#160; var term = initTerminal&#40;80, 20&#41;; &#160; &#160; &#160; // set up demo typers &#160; &#160; $&#40;'codeexample1'&#41;.addEvent&#40;'click', &#40;function&#40;e&#41; &#160; &#160; &#160; &#160; &#160; &#160; &#123; <a href="http://ajaxian.com/archives/skulpt-crazy-project-that-lets-your-browser-parse-and-run-python">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>
<a href="http://www.skulpt.org/">Skulpt</a> is an entirely in-browser implementation of Python.
</p></blockquote>
<p>Really. Crazy and cool.</p>
<p><img src="http://ajaxian.com/wp-content/uploads/skulpt.png" alt="" title="skulpt" width="500" height="463" class="alignnone size-full wp-image-7231" /></p>
<p>You can build an example term like this just via:</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;">window.<span style="color: #006600;">addEvent</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'domready'</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-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> term = initTerminal<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">80</span>, <span style="color:#800000;">20</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>
<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: #009900; font-style: italic;">// set up demo typers</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;">&#40;</span><span style="color: #3366CC;">'codeexample1'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">addEvent</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'click'</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>e<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; &nbsp; &nbsp; <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; &nbsp; &nbsp; &nbsp; &nbsp; e.<span style="color: #006600;">stop</span><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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; term.<span style="color: #006600;">doClear</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; term.<span style="color: #006600;">writeStr</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"print <span style="color: #000099; font-weight: bold;">\"</span>Hello, World!<span style="color: #000099; font-weight: bold;">\"</span>&nbsp; &nbsp; &nbsp;# natch"</span>, <span style="color: #003366; font-weight: bold;">false</span>, <span style="color: #003366; font-weight: bold;">true</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; &nbsp; &nbsp; &nbsp; &nbsp; term.<span style="color: #006600;">doEnter</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</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; $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'codeexample2'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">addEvent</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'click'</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>e<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; &nbsp; &nbsp; &nbsp; &nbsp; <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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.<span style="color: #006600;">stop</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; term.<span style="color: #006600;">doClear</span><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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; term.<span style="color: #006600;">writeStr</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"for i in range(5):"</span>, <span style="color: #003366; font-weight: bold;">false</span>, <span style="color: #003366; font-weight: bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span>; term.<span style="color: #006600;">doEnter</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; term.<span style="color: #006600;">writeStr</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"&nbsp; &nbsp; print i"</span>, <span style="color: #003366; font-weight: bold;">false</span>, <span style="color: #003366; font-weight: bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span>; term.<span style="color: #006600;">doEnter</span><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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; term.<span style="color: #006600;">doEnter</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</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; $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'codeexample3'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">addEvent</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'click'</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>e<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; &nbsp; &nbsp; &nbsp; &nbsp; <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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.<span style="color: #006600;">stop</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; term.<span style="color: #006600;">doClear</span><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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; term.<span style="color: #006600;">writeStr</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"[x*x for x in range(20) if x % 2 == 0]"</span>, <span style="color: #003366; font-weight: bold;">false</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;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; term.<span style="color: #006600;">doEnter</span><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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</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>
<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; term.<span style="color: #006600;">writeStr</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"Skulpt demo REPL - "</span> + <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">toLocaleString</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> + <span style="color: #3366CC;">"<span style="color: #000099; font-weight: bold;">\n</span>"</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; term.<span style="color: #006600;">writeStr</span><span style="color:#006600; font-weight:bold;">&#40;</span>term.<span style="color: #006600;">PS1</span>, <span style="color: #003366; font-weight: bold;">true</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><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>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/skulpt-crazy-project-that-lets-your-browser-parse-and-run-python/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>CleverCSS: Rich Python-like DSL for CSS</title>
		<link>http://ajaxian.com/archives/clevercss-rich-python-like-dsl-for-css</link>
		<comments>http://ajaxian.com/archives/clevercss-rich-python-like-dsl-for-css#comments</comments>
		<pubDate>Tue, 26 May 2009 12:19:40 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6844</guid>
		<description><![CDATA[We have mentioned Sass and other CSS abstraction libraries before, but somehow CleverCSS slipped by. The nesting DSL looks similar to other solutions: PLAIN TEXT CSS: &#160; ul#comments, ol#comments: &#160; margin: 0 &#160; padding: 0 &#160; &#160; li: &#160; &#160; padding: 0.4em &#160; &#160; margin: 0.8em 0 0.8em &#160; &#160; h3: &#160; &#160; &#160; font-size: <a href="http://ajaxian.com/archives/clevercss-rich-python-like-dsl-for-css">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>We have mentioned <a href="http://ajaxian.com/archives/sass-y-dynamic-css">Sass</a> and other CSS abstraction libraries before, but somehow <a href="http://sandbox.pocoo.org/clevercss/">CleverCSS</a> slipped by.</p>
<p>The nesting DSL looks similar to other solutions:</p>
<div class="igBar"><a href="javascript:showCodeTxt('css-8');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CSS:</span>
<div id="css-8">
<div class="css">
<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;">ul#comments, ol#comments:</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: #000000; font-weight: bold;">margin</span>: <span style="color:#800000;">0</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: #000000; font-weight: bold;">padding</span>: <span style="color:#800000;">0</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; li:</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: #000000; font-weight: bold;">padding</span>: <span style="color:#800000;">0</span><span style="color: #6666ff;">.4em</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"></span>&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">margin</span>: <span style="color:#800000;">0</span><span style="color: #6666ff;">.8em </span><span style="color:#800000;">0</span> <span style="color:#800000;">0</span><span style="color: #6666ff;">.8em</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></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; h3:</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: #000000; font-weight: bold;">font-size</span>: <span style="color:#800000;">1</span><span style="color: #6666ff;">.2em</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"></span>&nbsp; &nbsp; p:</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: #000000; font-weight: bold;">padding</span>: <span style="color:#800000;">0</span><span style="color: #6666ff;">.3em</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"></span>&nbsp; &nbsp; p.meta:</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: #000000; font-weight: bold;">text-align</span>: <span style="color: #000000; font-weight: bold;">right</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; <span style="color: #000000; font-weight: bold;">color</span>: #ddd</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>But, you can also use attributes:</p>
<div class="igBar"><a href="javascript:showCodeTxt('css-9');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CSS:</span>
<div id="css-9">
<div class="css">
<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;">#main p:</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; font-&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; family: Verdana, <span style="color: #993333;">sans-serif</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: #000000; font-weight: bold;">size</span>: <span style="color:#800000;">1</span><span style="color: #6666ff;">.1em</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"></span>&nbsp; &nbsp; style: <span style="color: #993333;">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;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Define constants:</p>
<div class="igBar"><a href="javascript:showCodeTxt('css-10');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CSS:</span>
<div id="css-10">
<div class="css">
<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;">background_color = #ccc</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;">#main:</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: #000000; font-weight: bold;">background-color</span>: $background_color</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>Implicit concatenation:</p>
<div class="igBar"><a href="javascript:showCodeTxt('css-11');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CSS:</span>
<div id="css-11">
<div class="css">
<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: #000000; font-weight: bold;">padding</span>: $foo + <span style="color:#800000;">2</span> + <span style="color:#800000;">3</span> $foo - <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;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">// returns: <span style="color: #000000; font-weight: bold;">padding</span>: <span style="color:#800000;">15</span> <span style="color:#800000;">8</span>; if $foo is <span style="color:#800000;">10</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>Calculations:</p>
<div class="igBar"><a href="javascript:showCodeTxt('css-12');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CSS:</span>
<div id="css-12">
<div class="css">
<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;">// calculations with numbers / values</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;">42px + <span style="color:#800000;">2</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt; 44px</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">10px * <span style="color:#800000;">2</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt; 20px</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;">1cm + 1mm&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; 11mm</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;">&#40;</span><span style="color:#800000;">1</span> + <span style="color:#800000;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span> * <span style="color:#800000;">3</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; <span style="color:#800000;">9</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;">// string concatenation</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;">foo + bar&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; foobar</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: #ff0000;">"blub blah"</span> + <span style="color: #ff0000;">"baz"</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; <span style="color: #ff0000;">'blub blahbaz'</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;">// You can also calculate with numbers:</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;">#fff - #ccc&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; #333333</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">cornflowerblue - coral&nbsp; &nbsp; &nbsp; -&gt; #00169d</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;">// You can also add or subtract a number from it and it will do so for all three channels <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #993333;">red</span>, <span style="color: #993333;">green</span>, <span style="color: #000000; font-weight: bold;">blue</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;">crimson - <span style="color:#800000;">20</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt; #c80028</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>Nice :)<!-- bablooO --></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/clevercss-rich-python-like-dsl-for-css/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>pyQuery: Same API, but with a snake.</title>
		<link>http://ajaxian.com/archives/pyquery</link>
		<comments>http://ajaxian.com/archives/pyquery#comments</comments>
		<pubDate>Mon, 08 Dec 2008 12:45:26 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5320</guid>
		<description><![CDATA[jQuery came first, but then we have seen others such as pQuery. Now we have pyQuery which brings the same great taste API to Python. The author Olivier Lauzanne explains: yquery allows you to make jquery queries on xml documents. The API is as much as possible the similar to jquery. pyquery uses lxml for <a href="http://ajaxian.com/archives/pyquery">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>jQuery came first, but then we have seen others such as <a href="http://ajaxian.com/archives/pquery-where-p-perl">pQuery</a>.</p>
<p>Now we have <a href="http://pypi.python.org/pypi/pyquery">pyQuery</a> which brings the same great <strike>taste</strike> API to Python. The author Olivier Lauzanne explains:</p>
<blockquote><p>
yquery allows you to make jquery queries on xml documents. The API is as much as possible the similar to jquery. pyquery uses lxml for fast xml and html manipulation.</p>
<p>This is not (or at least not yet) a library to produce or interact with javascript code. I just liked the jquery API and I missed it in python so I told myself "Hey let's make jquery in python". This is the result.</p>
<p>It can be used for many purposes, one idea that I might try in the future is to use it for templating with pure http templates that you modify using pyquery.</p>
<p>You can use the PyQuery class to load an xml document from a string, a lxml document, from a file or from an url:</p>
<div class="igBar"><a href="javascript:showCodeTxt('python-14');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">PYTHON:</span>
<div id="python-14">
<div class="python">
<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;">&gt;&gt;&gt; <span style="color: #ff7700;font-weight:bold;">from</span> pyquery <span style="color: #ff7700;font-weight:bold;">import</span> PyQuery</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;">&gt;&gt;&gt; <span style="color: #ff7700;font-weight:bold;">from</span> lxml <span style="color: #ff7700;font-weight:bold;">import</span> etree</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&gt;&gt;&gt; d = PyQuery<span style="color:#000000; font-weight:bold;">&#40;</span><span style="color: #483d8b;">"&lt;html&gt;&lt;/html&gt;"</span><span style="color:#000000; 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;">&gt;&gt;&gt; d = PyQuery<span style="color:#000000; font-weight:bold;">&#40;</span>etree.<span style="color: black;">fromstring</span><span style="color:#000000; font-weight:bold;">&#40;</span><span style="color: #483d8b;">"&lt;html&gt;&lt;/html&gt;"</span><span style="color:#000000; font-weight:bold;">&#41;</span><span style="color:#000000; 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;">&gt;&gt;&gt; d = PyQuery<span style="color:#000000; font-weight:bold;">&#40;</span>url=<span style="color: #483d8b;">'http://google.com/'</span><span style="color:#000000; 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;">&gt;&gt;&gt; d = PyQuery<span style="color:#000000; font-weight:bold;">&#40;</span>filename=path_to_html_file<span style="color:#000000; 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>
<blockquote>
<p>We also saw new posts on <a href="http://pyjs.org/">pyjamas</a>, the JS emitter (a la GWT for Java) that <a href="http://ajaxian.com/archives/pyjamas-pythons-answer-to-gwt">we covered awhile back</a>.</p>
<p>Add to that the fantastic week that the pythonistas have had as they laud over us with <a href="http://www.python.org/download/releases/3.0/">Python 3000</a> having a final release (which will kick in updates to libraries that are needed to make this backwards not so compatible upgrade viable). It gives a kick in the backside to Perl, Ruby, Java, and even us JS folk :)</p></blockquote>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/pyquery/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pyjamas: GWT for Python</title>
		<link>http://ajaxian.com/archives/pyjamas-gwt-for-python</link>
		<comments>http://ajaxian.com/archives/pyjamas-gwt-for-python#comments</comments>
		<pubDate>Tue, 07 Oct 2008 13:00:58 +0000</pubDate>
		<dc:creator>Ben Galbraith</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4689</guid>
		<description><![CDATA[Last week, we posted a story about deploying GWT to PHP back-ends. We've got another GWT-ish post this week: Pyjamas, a sort of GWT for Python. The SourceForge project page has a brief overview and pointers to a tutorial, a widget showcase, and more.]]></description>
			<content:encoded><![CDATA[<p>Last week, we posted a story about deploying GWT to PHP back-ends. We've got another GWT-ish post this week: Pyjamas, a sort of GWT for Python.</p>
<p><img src="http://ajaxian.com/wp-content/uploads/py.png" alt="" title="py" width="348" height="315" class="alignnone size-full wp-image-4692" /></p>
<p>The <a href="http://pyjamas.sourceforge.net/">SourceForge project page</a> has a brief overview and pointers to a <a href="http://pyjd.sf.net/controls_tutorial.html">tutorial</a>, a <a href="http://pyjamas.sourceforge.net/showcase/Showcase.html">widget showcase</a>, and more.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/pyjamas-gwt-for-python/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JSBridge: Powering Mozilla with Python</title>
		<link>http://ajaxian.com/archives/jsbridge-powering-mozilla-with-python</link>
		<comments>http://ajaxian.com/archives/jsbridge-powering-mozilla-with-python#comments</comments>
		<pubDate>Fri, 08 Aug 2008 12:22:42 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4042</guid>
		<description><![CDATA[JSBridge is an incredibly alpha, but interesting new project, lead by Mikeal Rogers, that bridges Python and JavaScript with respect to Mozilla. It uses mozrunner, the Python library that can power Mozilla applications (e.g. Firefox). Once you fire up jsbridge MozRepl will kick into gear, and you will be able to interact across the bridge. <a href="http://ajaxian.com/archives/jsbridge-powering-mozilla-with-python">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/jsbridge">JSBridge</a> is an incredibly alpha, but interesting new project, lead by Mikeal Rogers, that bridges Python and JavaScript with respect to Mozilla. It uses <a href="http://code.google.com/p/mozrunner/">mozrunner</a>, the Python library that can power Mozilla applications (e.g. Firefox).</p>
<p>Once you fire up <code>jsbridge</code> MozRepl will kick into gear, and you will be able to interact across the bridge. "This includes JavaScript < -> Python object translations and a callback mechanism for Python responses to custom events fired in the javascript environment."</p>
<p>Of course, this isn't related to <a href="http://wiki.mozilla.org/Tamarin:IronMonkey">IronMonkey</a> the project that allows you to write Python (and Ruby and ...) on top of Tamarin.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/jsbridge-powering-mozilla-with-python/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Django and ExtJS Grids with Filters</title>
		<link>http://ajaxian.com/archives/django-and-extjs-grids-with-filters</link>
		<comments>http://ajaxian.com/archives/django-and-extjs-grids-with-filters#comments</comments>
		<pubDate>Mon, 04 Aug 2008 15:38:16 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Sencha]]></category>
		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4008</guid>
		<description><![CDATA[Are you an ExtJS and Django user? If so, you will want to check out this article by Matt of Tangible Worldwide on Using ExtJS's Grid Filtering with Django. He goes into detail on how to tweak the grid filtering system that is aimed at PHP, and getting it to work in a way that <a href="http://ajaxian.com/archives/django-and-extjs-grids-with-filters">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Are you an ExtJS and Django user? If so, you will want to check out this article by Matt of Tangible Worldwide on <a href="http://www.debatablybeta.com/posts/using-extjss-grid-filtering-with-django/">Using ExtJS's Grid Filtering with Django</a>.</p>
<p>He goes into detail on how to tweak the grid filtering system that is aimed at PHP, and getting it to work in a way that allows you to write this Django code:</p>
<div class="igBar"><a href="javascript:showCodeTxt('python-16');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">PYTHON:</span>
<div id="python-16">
<div class="python">
<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: #808080; font-style: italic;"># take a ContentType model name (say, from the URL)</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: #808080; font-style: italic;"># and create a QuerySet</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">ctype = ContentType.<span style="color: black;">objects</span>.<span style="color: black;">get</span><span style="color:#000000; font-weight:bold;">&#40;</span>model=ctype_model<span style="color:#000000; 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;">model_class = ctype.<span style="color: black;">model_class</span><span style="color:#000000; font-weight:bold;">&#40;</span><span style="color:#000000; 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;">obj_qs = model_class.<span style="color: black;">objects</span>.<span style="color: black;">filter</span><span style="color:#000000; font-weight:bold;">&#40;</span><span style="color:#000000; 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;"><span style="color: #808080; font-style: italic;"># 'q' is the set of POSTed filtering parameters</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;">filter_params = request.<span style="color: black;">POST</span>.<span style="color: black;">get</span><span style="color:#000000; font-weight:bold;">&#40;</span><span style="color: #483d8b;">'q'</span>, <span style="color: #483d8b;">'[]'</span><span style="color:#000000; 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>
<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: #808080; font-style: italic;"># decode the filtering parameters w/ simplejson</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">filter_params = simplejson.<span style="color: black;">loads</span><span style="color:#000000; font-weight:bold;">&#40;</span>filter_params<span style="color:#000000; 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;"><span style="color: #808080; font-style: italic;"># apply the filtering params</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;">filtered_qs = get_queryset_from_ext_filters<span style="color:#000000; font-weight:bold;">&#40;</span>obj_qs, filter_params<span style="color:#000000; 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>
<blockquote>
<p>ExtJS 2.1 saw inclusion of the popular&nbsp;(at least in my world)&nbsp;user extension for AJAX filtering of data by grid columns. As useful as this is (provided you can abide by the GPL or paid licensing options), the filter parameters serialized as a PHP array, which is not particularly useful for other languages. With a quick modification to the grid filtering serialization method and a helper function for Django, we can rewire the system to send a JSON string that Django can use to directly apply filtering to a QuerySet. I've found that most clients love having this sort of command and flexibility over their data -- especially the kind that don't necessarily realize that this visualization and control exists. I like that. Additionally, the amount of work and code required is minimal, and the code both reusable and straight-forward. I like that, too.</p>
<p>There are 4 steps to this process:</p>
<ol>
<li>Modify the serialization method in GridFilters.js</li>
<li>Set up the helper function that will process the QuerySet with the grid filter parameters</li>
<li>Slightly customize your models (see below)</li>
<li>Add (simple) helper code to your Ajax view</li>
</ol>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/django-and-extjs-grids-with-filters/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSON Pickle: Serialize your complex Python objects to JSON</title>
		<link>http://ajaxian.com/archives/json-pickle-serialize-your-complex-python-objects-to-json</link>
		<comments>http://ajaxian.com/archives/json-pickle-serialize-your-complex-python-objects-to-json#comments</comments>
		<pubDate>Thu, 31 Jul 2008 12:50:18 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[jsonpickle]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3979</guid>
		<description><![CDATA[John Paulett wanted to be able to define complex Python model objects, then seamlessly pass them into CouchDB and to client-side Javascript. To make this happen for objects that are beyond primitive sets he created JSON Pickle which has been used on the Universal Feed Parser, and lets you do the following: PLAIN TEXT PYTHON: <a href="http://ajaxian.com/archives/json-pickle-serialize-your-complex-python-objects-to-json">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>John Paulett wanted to be able to define complex Python model objects, then seamlessly pass them into CouchDB and to client-side Javascript.</p>
<p>To make this happen for objects that are beyond primitive sets he created <a href="http://code.google.com/p/jsonpickle/">JSON Pickle</a> which has been used on the Universal Feed Parser, and lets you do the following:</p>
<div class="igBar"><a href="javascript:showCodeTxt('python-18');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">PYTHON:</span>
<div id="python-18">
<div class="python">
<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;">&gt;&gt;&gt; <span style="color: #ff7700;font-weight:bold;">import</span> jsonpickle</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;">&gt;&gt;&gt; <span style="color: #ff7700;font-weight:bold;">from</span> jsonpickle.<span style="color: black;">tests</span>.<span style="color: black;">classes</span> <span style="color: #ff7700;font-weight:bold;">import</span> Thing</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;"><span style="color: #808080; font-style: italic;"># Create an object.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&gt;&gt;&gt; obj = Thing<span style="color:#000000; font-weight:bold;">&#40;</span><span style="color: #483d8b;">'A String'</span><span style="color:#000000; 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;">&gt;&gt;&gt; <span style="color: #ff7700;font-weight:bold;">print</span> obj.<span style="color: black;">name</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">A <span style="color: #dc143c;">String</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: #808080; font-style: italic;"># Use jsonpickle to transform the object into a JSON string.</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;">&gt;&gt;&gt; pickled = jsonpickle.<span style="color: black;">dumps</span><span style="color:#000000; font-weight:bold;">&#40;</span>obj<span style="color:#000000; 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;">&gt;&gt;&gt; <span style="color: #ff7700;font-weight:bold;">print</span> pickled</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:#000000; font-weight:bold;">&#123;</span><span style="color: #483d8b;">"child"</span>: null, <span style="color: #483d8b;">"classname__"</span>: <span style="color: #483d8b;">"Thing"</span>, <span style="color: #483d8b;">"name"</span>: <span style="color: #483d8b;">"A String"</span>, <span style="color: #483d8b;">"classmodule__"</span>: <span style="color: #483d8b;">"jsonpickle.tests.classes"</span><span style="color:#000000; 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;"><span style="color: #808080; font-style: italic;"># Use jsonpickle to recreate a Python object from a JSON string</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&gt;&gt;&gt; unpickled = jsonpickle.<span style="color: black;">loads</span><span style="color:#000000; font-weight:bold;">&#40;</span>pickled<span style="color:#000000; 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;">&gt;&gt;&gt; <span style="color: #ff7700;font-weight:bold;">print</span> unpickled.<span style="color: black;">name</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">A <span style="color: #dc143c;">String</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>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/json-pickle-serialize-your-complex-python-objects-to-json/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dojango: Two great tastes in one can!</title>
		<link>http://ajaxian.com/archives/dojango-two-great-tastes-in-one-can</link>
		<comments>http://ajaxian.com/archives/dojango-two-great-tastes-in-one-can#comments</comments>
		<pubDate>Mon, 28 Jul 2008 15:22:40 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Dojo]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3941</guid>
		<description><![CDATA[Dojango, a template Django application that includes full Dojo support baked in, has been released by Tobias Klipstein, Nikolai Onken, and Wolfram Kriesing. It provides capabilities to easily switch between several Dojo versions and sources (e.g. aol, google, local) Delivers helping utilities, that makes the development of rich internet applications in combination with dojo more <a href="http://ajaxian.com/archives/dojango-two-great-tastes-in-one-can">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.uxebu.com/wp-content/uploads//2008/07/dojango_logo.jpg" border="0" style="float: right; padding: 8px"/></p>
<p><a href="http://code.google.com/p/dojango/">Dojango</a>, a template Django application that includes full Dojo support baked in, has <a href="http://blog.uxebu.com/2008/07/23/dojango-version-03-released/">been released</a> by Tobias Klipstein, Nikolai Onken, and Wolfram Kriesing.</p>
<ul>
<li>It provides capabilities to easily switch between several Dojo versions and sources (e.g. aol, google, local)</li>
<li>Delivers helping utilities, that makes the development of rich internet applications in combination with dojo more comfortable.</li>
<li>It makes the building of your own packed Dojo release easier.</li>
<li>It includes a reusable django app that provides Dojo</li>
<li>It includes helper functions, i.e. JSON conversion</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/dojango-two-great-tastes-in-one-can/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>LLVM and running C as well as Python in the browser</title>
		<link>http://ajaxian.com/archives/llvm-and-running-c-as-well-as-python-in-the-browser</link>
		<comments>http://ajaxian.com/archives/llvm-and-running-c-as-well-as-python-in-the-browser#comments</comments>
		<pubDate>Mon, 07 Jul 2008 13:50:43 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3827</guid>
		<description><![CDATA[Dan Morrill doesn't like JavaScript 2. His reasoning is a little like the folks who don't want Java.Next to try to copy features from every other language, but to just be the best static language, and let other languages like Scala, Groovy, JRuby (and the hundreds of others like Fan) go in different directions on <a href="http://ajaxian.com/archives/llvm-and-running-c-as-well-as-python-in-the-browser">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Dan Morrill <a href="http://blog.morrildl.net/2008/07/why-i-dont-like-javascript-2.html">doesn't like JavaScript 2</a>. His reasoning is a little like the folks who don't want Java.Next to try to copy features from every other language, but to just be the best static language, and let other languages like Scala, Groovy, JRuby (and the hundreds of others like Fan) go in different directions on the same Java platform.</p>
<p>You could argue the same for the browser platform. Why push JavaScript 2 further than cleaning it up, and instead allow other languages to augment it.</p>
<p>This is where technology such as IronMonkey come in, as well as the work that Scott Peterson is doing, <a href="http://www.toolness.com/wp/?p=52">written up here</a>:</p>
<blockquote><p>
Scott Petersen from Adobe gave a talk at Mozilla on a toolchain heâ€™s been creatingâ€”soon to be open-sourcedâ€”that allows C code to be targeted to the Tamarin virtual machine. Aside from being a really interesting piece of technology, I thought its implications for the web were pretty impressive.</p>
<p>If I followed his presentation right, Petersenâ€™s toolchain works something like this:</p>
<ol>
<li>A special version of the GNU C Compilerâ€”possibly <a href="http://llvm.org/cmds/llvmgcc.html">llvm-gcc</a>â€”compiles C code into instructions for the <a href="http://en.wikipedia.org/wiki/Llvm">Low Level Virtual Machine</a>.</li>
<li>The LLVM instructions are converted into opcodes for a custom Virtual Machine that runs in <a href="http://en.wikipedia.org/wiki/Actionscript">ActionScript</a>, a variant of ECMAScript and sibling of JavaScript.</li>
<li>The ActionScript is automatically compiled into Tamarin bytecode by Adobe Flash, which may be further compiled into native machine language by Tamarinâ€™s Just-in-Time (JIT) compiler.</li>
</ol>
<p>The toolchain includes lots of other details, such as a custom POSIX system call API and a C multimedia library that provides access to Flash.  And thereâ€™s some things that Petersen had to add to Tamarin, such as a native byte array that maps directly to RAM, thereby allowing the VMâ€™s â€œemulationâ€ of memory to have only a minor overhead over the real thing.</p>
<p>The end result is the ability to run a wide variety of existing C code in Flash at acceptable speeds.  Petersen demonstrated a version of Quake running in a Flash app, as well as a C-based Nintendo emulator running Zelda; both were eminently playable, and included sound effects and music.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/llvm-and-running-c-as-well-as-python-in-the-browser/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Creating a Flex application using the TurboGears framework</title>
		<link>http://ajaxian.com/archives/creating-a-flex-application-using-the-turbogears-framework</link>
		<comments>http://ajaxian.com/archives/creating-a-flex-application-using-the-turbogears-framework#comments</comments>
		<pubDate>Fri, 12 Jan 2007 13:31:01 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Screencast]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=2006</guid>
		<description><![CDATA[Screencasts are a nice way to learn certain things. Adobe has done a fun one, and got their own James Ward, and the knowledgeable Bruce Eckel together to write some code. The coding session is the pair of them building a sample app from scratch using TurboGears on the backend, and Flex on the front <a href="http://ajaxian.com/archives/creating-a-flex-application-using-the-turbogears-framework">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Screencasts are a nice way to learn certain things. Adobe has done a fun one, and got their own James Ward, and the knowledgeable Bruce Eckel together to write some code.</p>
<p>The coding session is the pair of them <a href="http://www.adobe.com/devnet/flex/articles/eckel_video.html">building a sample app from scratch</a> using TurboGears on the backend, and Flex on the front end.</p>
<p>It is fun to see Bruce using plain old vi for his python hacking, and James gets to go into uber-IDE land with the Flex Builder (built on Eclipse).</p>
<p><a href="http://www.adobe.com/devnet/flex/articles/eckel_video.html"><br />
<img src="http://www.adobe.com/devnet/flex/articles/eckel_video/fig01.jpg" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/creating-a-flex-application-using-the-turbogears-framework/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pyjamas: Pythons answer to GWT</title>
		<link>http://ajaxian.com/archives/pyjamas-pythons-answer-to-gwt</link>
		<comments>http://ajaxian.com/archives/pyjamas-pythons-answer-to-gwt#comments</comments>
		<pubDate>Tue, 07 Nov 2006 00:54:14 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/pyjamas-pythons-answer-to-gwt</guid>
		<description><![CDATA[If you are a python coder who doesn't like JavaScript and wishes she could stay in python land more, maybe pyjamas is the framework for you. It is an early stage port of sorts of GWT. Given that a lot of python goes on at Google, they may be interested in this themselves, and it <a href="http://ajaxian.com/archives/pyjamas-pythons-answer-to-gwt">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>If you are a python coder who doesn't like JavaScript and wishes she could stay in python land more, maybe <a href="http://pyjamas.pyworks.org/">pyjamas</a> is the framework for you.</p>
<p>It is an early stage port of sorts of GWT.</p>
<p>Given that a lot of python goes on at Google, they may be interested in this themselves, and it would be really nice if the underlying JavaScript was shared where it made sense:</p>
<ul>
<li>Shared ugly browser handling fluff</li>
<li>Java oddity handling</li>
<li>Python oddity handling</li>
</ul>
<p>Then other languages and platforms could come to the party and play too.</p>
<p><a href="http://pyjamas.pyworks.org/"><img src="http://ajaxian.com/wp-content/images/pyjamasmail.png" alt="Pyjamas" border="0" width="580" height="588"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/pyjamas-pythons-answer-to-gwt/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>MochiKit Releases Version 1.3</title>
		<link>http://ajaxian.com/archives/mochikit-releases-version-13</link>
		<comments>http://ajaxian.com/archives/mochikit-releases-version-13#comments</comments>
		<pubDate>Tue, 02 May 2006 04:38:35 +0000</pubDate>
		<dc:creator>Rob Sanheim</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=1130</guid>
		<description><![CDATA[MochiKit, "a lightweight JavaScript Library", has released version 1.3.1. The highlight of this release is MochiKit.Signal - a simple universal event handling system. Other features include additional examples, improved documentation, and changes and tweaks to Async, Base, Logging, and Dom and packages. For the full list of changes, check the version history, or just download <a href="http://ajaxian.com/archives/mochikit-releases-version-13">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mochikit.com/"><img class="right" src="http://ajaxian.com/wp-content/images/mochikit_logo.gif" alt="mochi kit logo" border="0" width="186" height="146"/></a><br />
<a href="http://mochikit.com/">MochiKit</a>, "a lightweight JavaScript Library", has <a href="http://mochikit.com/ann/MochiKit-1.3.html">released version 1.3.1</a>.  The highlight of this release is <a href="http://mochikit.com/doc/html/MochiKit/Signal.html">MochiKit.Signal</a> - a simple universal event handling system.  Other features include additional examples, improved documentation, and changes and tweaks to Async, Base, Logging, and Dom and packages.</p>
<p>For the full list of changes, check the <a href="http://mochikit.com/doc/html/MochiKit/index.html#version-history">version history,</a> or just <a href="http://mochikit.com/download.html">download it</a> and try it.  Also, if you are coming to the <a href="http://www.theajaxexperience.com/index.jsp">Ajax Experience</a>, don't miss Bob's <a href="http://www.theajaxexperience.com/speaker_topic_view.jsp?topicId=272">Intro to MochiKit</a> if you are interesed in this library.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/mochikit-releases-version-13/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>The Future of JavaScript: an Update from Brendan Eich</title>
		<link>http://ajaxian.com/archives/the-future-of-javascript-an-update-from-brendan-eich</link>
		<comments>http://ajaxian.com/archives/the-future-of-javascript-an-update-from-brendan-eich#comments</comments>
		<pubDate>Mon, 20 Feb 2006 13:00:07 +0000</pubDate>
		<dc:creator>Rob Sanheim</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=893</guid>
		<description><![CDATA[Brendan Eich has posted a status update on some of the work going into the upcoming JavaScript 2, aka ECMAScript Edition 4 (ES4). One feature that should look familiar to Python hackers are generators and iterators, as seen in the following example taken from a console session: PLAIN TEXT JAVASCRIPT: js&#62; function count&#40;n&#41; &#123; &#160; <a href="http://ajaxian.com/archives/the-future-of-javascript-an-update-from-brendan-eich">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://weblogs.mozillazine.org/roadmap/">Brendan Eich</a> has posted a <a href="http://weblogs.mozillazine.org/roadmap/archives/2006/02/js_and_python_news.html">status update</a> on some of the work going into the upcoming JavaScript 2, aka ECMAScript Edition 4 (ES4).  One feature that should look familiar to Python hackers are <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=326466">generators and iterators</a>, as seen in the following example taken from a console session:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-20');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-20">
<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;">js&gt; <span style="color: #003366; font-weight: bold;">function</span> count<span style="color:#006600; font-weight:bold;">&#40;</span>n<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;">for</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i = <span style="color:#800000;">0</span>; i &lt;n; i++<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; yield i;</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;">js&gt; g = count<span style="color:#006600; font-weight:bold;">&#40;</span><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;"><span style="color:#006600; font-weight:bold;">&#91;</span>object Generator<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;">js&gt; g.<span style="color: #006600;">next</span><span style="color:#006600; font-weight:bold;">&#40;</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:#800000;">0</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;">js&gt; g.<span style="color: #006600;">next</span><span style="color:#006600; font-weight:bold;">&#40;</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:#800000;">1</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;">js&gt; two_to_nine = <span style="color:#006600; font-weight:bold;">&#91;</span>i <span style="color: #000066; font-weight: bold;">for</span> i <span style="color: #000066; font-weight: bold;">in</span> g<span style="color:#006600; font-weight:bold;">&#93;</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:#800000;">2</span>,<span style="color:#800000;">3</span>,<span style="color:#800000;">4</span>,<span style="color:#800000;">5</span>,<span style="color:#800000;">6</span>,<span style="color:#800000;">7</span>,<span style="color:#800000;">8</span>,<span style="color:#800000;">9</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;">js&gt; squares_to_<span style="color:#800000;">20</span> = <span style="color:#006600; font-weight:bold;">&#91;</span>i * i <span style="color: #000066; font-weight: bold;">for</span> i <span style="color: #000066; font-weight: bold;">in</span> count<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">20</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#93;</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:#800000;">0</span>,<span style="color:#800000;">1</span>,<span style="color:#800000;">4</span>,<span style="color:#800000;">9</span>,<span style="color:#800000;">16</span>,<span style="color:#800000;">25</span>,<span style="color:#800000;">36</span>,<span style="color:#800000;">49</span>,<span style="color:#800000;">64</span>,<span style="color:#800000;">81</span>,<span style="color:#800000;">100</span>,<span style="color:#800000;">121</span>,<span style="color:#800000;">144</span>,<span style="color:#800000;">169</span>,<span style="color:#800000;">196</span>,<span style="color:#800000;">225</span>,<span style="color:#800000;">256</span>,<span style="color:#800000;">289</span>,<span style="color:#800000;">324</span>,<span style="color:#800000;">361</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>Why go with the Python style and syntax?</p>
<blockquote><p>Given the years of development in Python and similarities to ECMAScript in application domains and programmer communities, we would rather follow than lead. By standing on Pythonâ€™s shoulders we reuse developer knowledge as well as design and implementation experience. The trick then becomes not borrowing too much from Python, just enough to gain the essential benefits: structured value-generating continuations and a general iteration protocol.</p></blockquote>
<p>Brendan also mentioned that support for <a href="http://weblogs.mozillazine.org/roadmap/archives/008865.html">XUL in Python</a> is almost done, and should land back into the main Firefox codebase from the <a href="http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&#038;module=all&#038;branch=DOM_AGNOSTIC2_BRANCH&#038;branchtype=match&#038;dir=&#038;file=&#038;filetype=match&#038;who=&#038;whotype=match&#038;sortby=Date&#038;hours=2&#038;date=week&#038;mindate=&#038;maxdate=&#038;cvsroot=%2Fcvsroot">DOM_AGNOSTIC2_BRANCH</a> soon.</p>
<p>The official spec that will lead the way is <a href="http://www.ecma-international.org/memento/TC39-TG1.htm">ECMA TG1</a>, which is being worked on by Brendan along with colleagues from Mozilla, Adobe, and Microsoft.  Lets hope Brendan's vision for JavaScript's future will become reality:</p>
<blockquote><p>My gut says that we will successfully evolve JS into a much stronger language, with a better and more standard library ecosystem, for the next ten years of its life. I will wager that other browsers will follow the ES4 standard, possibly even in 2007.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/the-future-of-javascript-an-update-from-brendan-eich/feed</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Django adopts Dojo as Ajax framework</title>
		<link>http://ajaxian.com/archives/django-adopts-dojo-as-ajax-framework</link>
		<comments>http://ajaxian.com/archives/django-adopts-dojo-as-ajax-framework#comments</comments>
		<pubDate>Wed, 01 Feb 2006 05:39:55 +0000</pubDate>
		<dc:creator>Rob Sanheim</dc:creator>
				<category><![CDATA[Dojo]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=806</guid>
		<description><![CDATA[Django, the Python "Web Framework for Perfectionists", is bundling Dojo for Ajax with its 0.92 release, due in out in a few weeks. The initial integration will use Dojo in the admin interface of Django, but the toolkit will be available for any part of a Django app. It was recently announced that the Java <a href="http://ajaxian.com/archives/django-adopts-dojo-as-ajax-framework">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.djangoproject.com/"><img class="right headerimage" src="http://media.djangoproject.com/img/site/hdr_logo.gif" alt="django logo" border="0" width="113" height="41"/></a><br />
<a href="http://www.djangoproject.com/">Django</a>, the Python "Web Framework for Perfectionists", is <a href="http://article.gmane.org/gmane.comp.web.dojo.user/3603">bundling Dojo for Ajax</a> with its 0.92 release, due in out in a few weeks.  The initial integration will use Dojo in the <a href="http://www.djangoproject.com/documentation/tutorial2/">admin</a> interface of Django, but the toolkit will be available for any part of a Django app.  </p>
<p>It was <a href="http://ajaxian.com/archives/webwork-22-released-solid-ajax-support">recently announced</a> that the Java framework WebWork 2.2 will be released with Dojo under the hood, so this looks like another vote of confidence from the open source community in Dojo's quality.</p>
<p>Thanks to <a href="http://lazutkin.com/blog/authors/1/">Eugene</a>, who also <a href="http://lazutkin.com/blog/2006/jan/28/django-dojo/">blogged</a> about the announcement.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/django-adopts-dojo-as-ajax-framework/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

