<?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: Layers of Confusion</title>
	<atom:link href="http://infrequently.org/2012/11/layers-of-confusion/feed/" rel="self" type="application/rss+xml" />
	<link>http://infrequently.org/2012/11/layers-of-confusion/</link>
	<description>Alex Russell on browsers, standards, and the process of progress.</description>
	<lastBuildDate>Thu, 11 Apr 2013 16:50:49 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>By: Reforming the W3C TAG &#124; Infrequently Noted</title>
		<link>http://infrequently.org/2012/11/layers-of-confusion/comment-page-1/#comment-240287</link>
		<dc:creator>Reforming the W3C TAG &#124; Infrequently Noted</dc:creator>
		<pubDate>Fri, 07 Dec 2012 12:29:18 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1941#comment-240287</guid>
		<description><![CDATA[[...] drone on and on and on about layering because explaining each bit of the platform in terms of the one below it relieves [...]]]></description>
		<content:encoded><![CDATA[<p>[...] drone on and on and on about layering because explaining each bit of the platform in terms of the one below it relieves [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://infrequently.org/2012/11/layers-of-confusion/comment-page-1/#comment-240276</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Thu, 06 Dec 2012 10:45:55 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1941#comment-240276</guid>
		<description><![CDATA[Hey Boris,

I&#039;m intimately familiar with the ways that CSS is constraint based and not necessarily imperative, see:

    http://infrequently.org/12/cassowary-js-refactor/demos/css/canvas-renderer.html

    https://github.com/slightlyoff/cassowary-js-refactor

It&#039;s not possible to use simple solvers for CSS without multi-step to accommodate line layout as you need to solve and constrain in multiple dimensions simultaneously, but I digress.

Back to the main issue: I&#039;m not suggesting that we need to describe CSS as an imperative system -- my (as yet unsuccessful) work with constraint solvers is expressly designed to give the WG a tool they can use to stop muddling around in the pseudo-imperative end of the pool and instead prototype features in the constraints directly.

I am instead suggesting that the areas in which we expose APIs, we need to act as though &lt;em&gt;whatever&lt;/em&gt; implementation is &quot;down there&quot; has been written in JS. For declarative features with no API, this is a no-op, but we both know that situation doesn&#039;t last forever. The implementation might, indeed, bottom out at a constraint solver! That&#039;s great, and doesn&#039;t change what I&#039;m advocating for.]]></description>
		<content:encoded><![CDATA[<p>Hey Boris,</p>
<p>I&#8217;m intimately familiar with the ways that CSS is constraint based and not necessarily imperative, see:</p>
<p>    <a href="http://infrequently.org/12/cassowary-js-refactor/demos/css/canvas-renderer.html" rel="nofollow">http://infrequently.org/12/cassowary-js-refactor/demos/css/canvas-renderer.html</a></p>
<p>    <a href="https://github.com/slightlyoff/cassowary-js-refactor" rel="nofollow">https://github.com/slightlyoff/cassowary-js-refactor</a></p>
<p>It&#8217;s not possible to use simple solvers for CSS without multi-step to accommodate line layout as you need to solve and constrain in multiple dimensions simultaneously, but I digress.</p>
<p>Back to the main issue: I&#8217;m not suggesting that we need to describe CSS as an imperative system &#8212; my (as yet unsuccessful) work with constraint solvers is expressly designed to give the WG a tool they can use to stop muddling around in the pseudo-imperative end of the pool and instead prototype features in the constraints directly.</p>
<p>I am instead suggesting that the areas in which we expose APIs, we need to act as though <em>whatever</em> implementation is &#8220;down there&#8221; has been written in JS. For declarative features with no API, this is a no-op, but we both know that situation doesn&#8217;t last forever. The implementation might, indeed, bottom out at a constraint solver! That&#8217;s great, and doesn&#8217;t change what I&#8217;m advocating for.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Boris</title>
		<link>http://infrequently.org/2012/11/layers-of-confusion/comment-page-1/#comment-240241</link>
		<dc:creator>Boris</dc:creator>
		<pubDate>Tue, 04 Dec 2012 06:04:49 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1941#comment-240241</guid>
		<description><![CDATA[There&#039;s a fundamental assumption here that the declarative stuff must then proceed to be specified in an imperative manner.  But that&#039;s simply not true.  Large parts of CSS are instead specified in terms of a constraint model.

Now obviously you can do an imperative implementation of a constraint model, but doing that with a specification overconstrains (pun intended) your implementation strategies, because back-solving from an imperative description to a constraint model without introducing bugs is rocket science.

In fact, I&#039;d go so far as to say that constraint-model descriptions are vastly superior to imperative ones when they&#039;re possible: they lend themselves more to parallel algorithms, they allow a variety of implementation strategies, and they&#039;re often much easier to understand.

Now of course for things like DOM tree manipulation, where there really is a lot of imperative stuff going on your suggestion makes sense.  But even there, things like &quot;update layout state&quot; are really more described in terms of constraints, not explicit imperative algorithms.]]></description>
		<content:encoded><![CDATA[<p>There&#8217;s a fundamental assumption here that the declarative stuff must then proceed to be specified in an imperative manner.  But that&#8217;s simply not true.  Large parts of CSS are instead specified in terms of a constraint model.</p>
<p>Now obviously you can do an imperative implementation of a constraint model, but doing that with a specification overconstrains (pun intended) your implementation strategies, because back-solving from an imperative description to a constraint model without introducing bugs is rocket science.</p>
<p>In fact, I&#8217;d go so far as to say that constraint-model descriptions are vastly superior to imperative ones when they&#8217;re possible: they lend themselves more to parallel algorithms, they allow a variety of implementation strategies, and they&#8217;re often much easier to understand.</p>
<p>Now of course for things like DOM tree manipulation, where there really is a lot of imperative stuff going on your suggestion makes sense.  But even there, things like &#8220;update layout state&#8221; are really more described in terms of constraints, not explicit imperative algorithms.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: c69</title>
		<link>http://infrequently.org/2012/11/layers-of-confusion/comment-page-1/#comment-240196</link>
		<dc:creator>c69</dc:creator>
		<pubDate>Tue, 27 Nov 2012 00:49:10 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1941#comment-240196</guid>
		<description><![CDATA[I think Ian himself does not understand that HTML is not &quot;just HTML&quot; anymore. CSS and HTML are extremely limited. Browser vendors cannot implement all features that millions (yes, this is not a typo) of developers demand.

Only Javascript can satisfy the hunger for new features for them. But Javascript cannot do much without APIs, and so: +1 to your article. 

@michael, that&#039;s a good illustration - programming in css is harder and clunkier, than programming in assembler. Today people want augmented reality, and browsers/specs give them rounded corners and hgroup tag.

WebRTC, WebComponents, JS DOM Bindings and better cache/storage mechanisms. This will open a new chapter in Web&#039;s timeline.]]></description>
		<content:encoded><![CDATA[<p>I think Ian himself does not understand that HTML is not &#8220;just HTML&#8221; anymore. CSS and HTML are extremely limited. Browser vendors cannot implement all features that millions (yes, this is not a typo) of developers demand.</p>
<p>Only Javascript can satisfy the hunger for new features for them. But Javascript cannot do much without APIs, and so: +1 to your article. </p>
<p>@michael, that&#8217;s a good illustration &#8211; programming in css is harder and clunkier, than programming in assembler. Today people want augmented reality, and browsers/specs give them rounded corners and hgroup tag.</p>
<p>WebRTC, WebComponents, JS DOM Bindings and better cache/storage mechanisms. This will open a new chapter in Web&#8217;s timeline.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://infrequently.org/2012/11/layers-of-confusion/comment-page-1/#comment-240193</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Mon, 26 Nov 2012 14:20:36 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1941#comment-240193</guid>
		<description><![CDATA[Wow, that&#039;s immensely clever. The sibling + universal selector trick for the wrap-around is amazing.

Not sure it defeats the argument per say, but I&#039;ll need to keep it in mind in future.]]></description>
		<content:encoded><![CDATA[<p>Wow, that&#8217;s immensely clever. The sibling + universal selector trick for the wrap-around is amazing.</p>
<p>Not sure it defeats the argument per say, but I&#8217;ll need to keep it in mind in future.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Haufe</title>
		<link>http://infrequently.org/2012/11/layers-of-confusion/comment-page-1/#comment-240180</link>
		<dc:creator>Michael Haufe</dc:creator>
		<pubDate>Sat, 24 Nov 2012 01:23:18 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1941#comment-240180</guid>
		<description><![CDATA[The link in the last comment was stripped:

http://eli.fox-epste.in/rule110-full.html]]></description>
		<content:encoded><![CDATA[<p>The link in the last comment was stripped:</p>
<p><a href="http://eli.fox-epste.in/rule110-full.html" rel="nofollow">http://eli.fox-epste.in/rule110-full.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Haufe</title>
		<link>http://infrequently.org/2012/11/layers-of-confusion/comment-page-1/#comment-240179</link>
		<dc:creator>Michael Haufe</dc:creator>
		<pubDate>Sat, 24 Nov 2012 01:22:07 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1941#comment-240179</guid>
		<description><![CDATA[Minor correction: HTML+CSS3 is indeed Turing Complete. Here is an implementation of Rule 110: ]]></description>
		<content:encoded><![CDATA[<p>Minor correction: HTML+CSS3 is indeed Turing Complete. Here is an implementation of Rule 110: </p>
]]></content:encoded>
	</item>
</channel>
</rss>
