<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Async I/O made &#8220;easy&#8221; using JavaScript</title>
	<atom:link href="http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/</link>
	<description>Cool links and commentary</description>
	<lastBuildDate>Wed, 21 Oct 2009 16:29:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Felipe Contreras</title>
		<link>http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/comment-page-1/#comment-435</link>
		<dc:creator>Felipe Contreras</dc:creator>
		<pubDate>Sun, 28 Sep 2008 20:19:54 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/#comment-435</guid>
		<description>Also, continuations in C are doable:
http://felipec.wordpress.com/2008/09/28/continuations-in-c-easy-asynchronous-stuff/</description>
		<content:encoded><![CDATA[<p>Also, continuations in C are doable:<br />
<a href="http://felipec.wordpress.com/2008/09/28/continuations-in-c-easy-asynchronous-stuff/" rel="nofollow">http://felipec.wordpress.com/2008/09/28/continuations-in-c-easy-asynchronous-stuff/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Felipe Contreras</title>
		<link>http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/comment-page-1/#comment-434</link>
		<dc:creator>Felipe Contreras</dc:creator>
		<pubDate>Sun, 28 Sep 2008 19:33:38 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/#comment-434</guid>
		<description>In Ruby you have proper closures, so it&#039;s much easier to do asynchronous stuff:
http://gist.github.com/13492</description>
		<content:encoded><![CDATA[<p>In Ruby you have proper closures, so it&#8217;s much easier to do asynchronous stuff:<br />
<a href="http://gist.github.com/13492" rel="nofollow">http://gist.github.com/13492</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pstickne</title>
		<link>http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/comment-page-1/#comment-433</link>
		<dc:creator>pstickne</dc:creator>
		<pubDate>Sun, 28 Sep 2008 18:56:46 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/#comment-433</guid>
		<description>The problem with OO in JS is that everyone (okay, most people?) wants to pretend it follows the class/object design of Smalltalk, Python, Java, C++, Eiffel, etc... and then constructs various implementations in an attempt to fit that model.
It isn&#039;t.
It&#039;s a prototype OO system. Like Self or Io.
Leave Java in Java.
(I think this applies to a number of the other &quot;proposals&quot; as well; most seemed fueled by language-comfortably taint.)
Use Javascript as Javascript.

That being said, I&#039;d like a cleanup and -minor expansion- of the language in general: removing object and non-object distinctions, removing &#039;var&#039; in global context, possibly even promoting all local variables to local lexicals by default, making a consistent way to having more control over the prototype, adding a &quot;lightweight&quot; syntax of creating functions (make &quot;blocks&quot; seem more natural), add some form of name-spaces, expand the built-in operations on arrays and other primitive data-types (as standard extensions), create a way to write custom [] and []= methods (and provide alternative always-direct member access), etc.

Javascript really has almost everything that it needs there. Some is buried, some isn&#039;t fully realized and the rest is suppressed.

Interesting article. It would be nice to see the specific Javascript version mentioned though as I&#039;d argue &quot;Javascript&quot; is still ubiquitous with ECMA Script 3 (ECMA-262).</description>
		<content:encoded><![CDATA[<p>The problem with OO in JS is that everyone (okay, most people?) wants to pretend it follows the class/object design of Smalltalk, Python, Java, C++, Eiffel, etc&#8230; and then constructs various implementations in an attempt to fit that model.<br />
It isn&#8217;t.<br />
It&#8217;s a prototype OO system. Like Self or Io.<br />
Leave Java in Java.<br />
(I think this applies to a number of the other &#8220;proposals&#8221; as well; most seemed fueled by language-comfortably taint.)<br />
Use Javascript as Javascript.</p>
<p>That being said, I&#8217;d like a cleanup and -minor expansion- of the language in general: removing object and non-object distinctions, removing &#8216;var&#8217; in global context, possibly even promoting all local variables to local lexicals by default, making a consistent way to having more control over the prototype, adding a &#8220;lightweight&#8221; syntax of creating functions (make &#8220;blocks&#8221; seem more natural), add some form of name-spaces, expand the built-in operations on arrays and other primitive data-types (as standard extensions), create a way to write custom [] and []= methods (and provide alternative always-direct member access), etc.</p>
<p>Javascript really has almost everything that it needs there. Some is buried, some isn&#8217;t fully realized and the rest is suppressed.</p>
<p>Interesting article. It would be nice to see the specific Javascript version mentioned though as I&#8217;d argue &#8220;Javascript&#8221; is still ubiquitous with ECMA Script 3 (ECMA-262).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rosie</title>
		<link>http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/comment-page-1/#comment-418</link>
		<dc:creator>Rosie</dc:creator>
		<pubDate>Mon, 22 Sep 2008 12:47:19 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/#comment-418</guid>
		<description>Aaah thanks a lot</description>
		<content:encoded><![CDATA[<p>Aaah thanks a lot</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alexl</title>
		<link>http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/comment-page-1/#comment-417</link>
		<dc:creator>alexl</dc:creator>
		<pubDate>Mon, 22 Sep 2008 10:50:17 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/#comment-417</guid>
		<description>Rosie;

Its a tiny wrapper around g_idle_add(). Its set up in gtk-js.c.</description>
		<content:encoded><![CDATA[<p>Rosie;</p>
<p>Its a tiny wrapper around g_idle_add(). Its set up in gtk-js.c.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rosie</title>
		<link>http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/comment-page-1/#comment-415</link>
		<dc:creator>Rosie</dc:creator>
		<pubDate>Mon, 22 Sep 2008 10:11:04 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/#comment-415</guid>
		<description>What is the add_idle() in the example implementation? Is it part of a JS Library? Thanks</description>
		<content:encoded><![CDATA[<p>What is the add_idle() in the example implementation? Is it part of a JS Library? Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sdsfsdf</title>
		<link>http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/comment-page-1/#comment-414</link>
		<dc:creator>sdsfsdf</dc:creator>
		<pubDate>Wed, 17 Sep 2008 11:34:31 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/#comment-414</guid>
		<description>&quot;Its IMHO pretty easy to understand&quot;

What!?</description>
		<content:encoded><![CDATA[<p>&#8220;Its IMHO pretty easy to understand&#8221;</p>
<p>What!?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alexl</title>
		<link>http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/comment-page-1/#comment-413</link>
		<dc:creator>alexl</dc:creator>
		<pubDate>Wed, 17 Sep 2008 09:25:28 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/#comment-413</guid>
		<description>Martin:

Interesting. It would be nice to have async sleep and queue_idle availible too, so you could do things like that.

Yield is part of JS 1.7, which should be available in Safari 3.0 too. Maybe in chrome too? I don&#039;t know what JS version V8 implements.

I don&#039;t necessarily disagree with you that JS isn&#039;t the nicest language about, but some of the things you mention can be fixed by standardizing the embedding bindings, and by &quot;grounding&quot; the base part of your app in C/C++. I don&#039;t love JS, but I believe its effective for this kinds of use (as proven by e.g. firefox). I don&#039;t know lua very well, but it seems like a similarly kind of weird language, but still people estimate that about 40% of adobe lightroom is written in that...</description>
		<content:encoded><![CDATA[<p>Martin:</p>
<p>Interesting. It would be nice to have async sleep and queue_idle availible too, so you could do things like that.</p>
<p>Yield is part of JS 1.7, which should be available in Safari 3.0 too. Maybe in chrome too? I don&#8217;t know what JS version V8 implements.</p>
<p>I don&#8217;t necessarily disagree with you that JS isn&#8217;t the nicest language about, but some of the things you mention can be fixed by standardizing the embedding bindings, and by &#8220;grounding&#8221; the base part of your app in C/C++. I don&#8217;t love JS, but I believe its effective for this kinds of use (as proven by e.g. firefox). I don&#8217;t know lua very well, but it seems like a similarly kind of weird language, but still people estimate that about 40% of adobe lightroom is written in that&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Martín Soto</title>
		<link>http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/comment-page-1/#comment-412</link>
		<dc:creator>Martín Soto</dc:creator>
		<pubDate>Wed, 17 Sep 2008 08:58:51 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/#comment-412</guid>
		<description>What you&#039;re trying to do looks very similar to what Gustavo Carneiro&#039;s GTasklets (http://www.gnome.org/~gjc/gtasklet/gtasklets.html) actually achieve for PyGTK applications. They are not only useful for asynchronous I/O, but for implementing bits and pieces of user interfaces. For example, in one application, I have a fullscreen mode that hides the cursor and a button bar after 10 seconds of mouse inactivity. The whole behavior is cleanly separated in a single tasklet procedure. Normally, this would require some additional attributes, as well as adding code to a few of the methods in the class controlling the fullscreen window, which is usually much less readable and maintainable because the code ends up being spread all over the place.

In a related note, I read your previous post about JavaScript being the quintessencial embedded language, but I really can&#039;t buy into JavaScript as a language for writing serious applications. Even despite Mozilla&#039;s efforts to improve the language in their Spidermonkey implementation (no one else supports yield statements in JavaScript as far as I know) the language has too many flaws to be taken seriously. I could start with variables being global by default (very dangerous!) and end with the lack of a standard class definition mechanism (e.g., everyone rolls out his own, specific, and incompatible class system) but discussing my complete list of pet peeves would require a dedicated website, I guess.

That said, I can believe that Spidermonkey is a lean, speedy interpreter, and that this characteristics make it very attractive for embedding. So bad, this doesn&#039;t make the language it implements any better, though...</description>
		<content:encoded><![CDATA[<p>What you&#8217;re trying to do looks very similar to what Gustavo Carneiro&#8217;s GTasklets (<a href="http://www.gnome.org/~gjc/gtasklet/gtasklets.html" rel="nofollow">http://www.gnome.org/~gjc/gtasklet/gtasklets.html</a>) actually achieve for PyGTK applications. They are not only useful for asynchronous I/O, but for implementing bits and pieces of user interfaces. For example, in one application, I have a fullscreen mode that hides the cursor and a button bar after 10 seconds of mouse inactivity. The whole behavior is cleanly separated in a single tasklet procedure. Normally, this would require some additional attributes, as well as adding code to a few of the methods in the class controlling the fullscreen window, which is usually much less readable and maintainable because the code ends up being spread all over the place.</p>
<p>In a related note, I read your previous post about JavaScript being the quintessencial embedded language, but I really can&#8217;t buy into JavaScript as a language for writing serious applications. Even despite Mozilla&#8217;s efforts to improve the language in their Spidermonkey implementation (no one else supports yield statements in JavaScript as far as I know) the language has too many flaws to be taken seriously. I could start with variables being global by default (very dangerous!) and end with the lack of a standard class definition mechanism (e.g., everyone rolls out his own, specific, and incompatible class system) but discussing my complete list of pet peeves would require a dedicated website, I guess.</p>
<p>That said, I can believe that Spidermonkey is a lean, speedy interpreter, and that this characteristics make it very attractive for embedding. So bad, this doesn&#8217;t make the language it implements any better, though&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alexl</title>
		<link>http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/comment-page-1/#comment-411</link>
		<dc:creator>alexl</dc:creator>
		<pubDate>Wed, 17 Sep 2008 08:42:23 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2008/09/16/async-io-made-easy-using-javascript/#comment-411</guid>
		<description>Jürg:

That would be very nice!</description>
		<content:encoded><![CDATA[<p>Jürg:</p>
<p>That would be very nice!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
