<?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>Full of BS &#187; AJAX</title>
	<atom:link href="http://fullof.bs/category/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://fullof.bs</link>
	<description>He just never stops talking</description>
	<lastBuildDate>Wed, 21 Mar 2012 05:14:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Checklist for Embedded IE</title>
		<link>http://fullof.bs/checklist-for-embedded-ie/</link>
		<comments>http://fullof.bs/checklist-for-embedded-ie/#comments</comments>
		<pubDate>Thu, 24 Aug 2006 02:13:56 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[ECMA / Javascript]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools and Libraries]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web and Web Standards]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/archives/163</guid>
		<description><![CDATA[MSHTML is an awesome user interface tool, but it has a whole lot of standard behaviors, many of which aren&#8217;t what one wants for an application (since it&#8217;s designed for the web.) This is a list of stuff you need to do to embed IE COM and have it behave like a normal application. There&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>MSHTML is an awesome user interface tool, but it has a whole lot of standard behaviors, many of which aren&#8217;t what one wants for an application (since it&#8217;s designed for the web.)  This is a list of stuff you need to do to embed IE COM and have it behave like a normal application.  There&#8217;s more than a person might expect.</p>
<p><span id="more-153"></span></p>
<ul>
<li>Suppress the user interface.  IE starts with most of its interface turned off, but a few things aren&#8217;t.  Notable things to include are to suppress the context menu and keyboard navigation.</li>
<ul>
<li>There are several ways to suppress the context menu.  The easiest way is to do it in the html.  Add <u>oncontextmenu=&#8221;return false;&#8221;</u> to your &lt;body&gt; and the problem just goes away, and it&#8217;s easily manually overridden for specific elements later.</li>
<li>Alternately, you can override the interface programmatically through <a title="IDocHostUIHandler Interface" href="http://msdn.microsoft.com/workshop/browser/hosting/reference/ifaces/idochostuihandler/idochostuihandler.asp">IDocHostUIHandler</a>.</li>
</ul>
<li>Get rid of the OnNavigate noise (the clicking sound when you hit a link.)  <a title="Suppressing OnNavigate" href="http://blog.sc.tri-bit.com/archives/162">This is harder than it should be</a>.</li>
<li>Prevent keyboard navigation.  If you only ever navigate once, and then do everything else in DHTML, this isn&#8217;t an issue, because there&#8217;s nothing to go forward or back to.  However, if you need to, the way to do this is to capture <a title="BeforeNavigate2" href="http://windowssdk.msdn.microsoft.com/en-us/library/ms628868.aspx">DWebBrowserEvents2::BeforeNavigate2()</a> and fill its last parameter, VARIANT_BOOL*&amp; Cancel, to true.  For security reasons this can&#8217;t be done in HTML without a garish ugly dialog box confirmation.</li>
<li>Prevent dragging and dropping links.  Do this with BeforeNavigate2() just like keyboard navigation.</li>
<li>Prevent selection.  The easiest way to do that is in the HTML by adding <u>onselectstart=&#8221;return false;&#8221;</u> to the &lt;body&gt;, which is also easily overridden for child elements where appropriate.  If you need it programmatically, such as a block which can be turned from and to editability, that&#8217;s in IDocHostUIHandler.</li>
<li>Handle some keys directly.  Particularly often, control keys, tab and f-keys need very different interpretations in applications than are the defaults in IE.  Some keys can be reliably intercepted in JScript, but not all of them.  For lightweight stuff, use JScript; it&#8217;ll be less painful.  However, if you need real control, you need to provide an <a title="Handle keypresses" href="http://msdn.microsoft.com/workshop/browser/hosting/reference/ifaces/idochostuihandler/translateaccelerator.asp">IDocHostUIHandler::TranslateAccelerator()</a> implementation.</li>
<li>Suppress the interior border.  People are often surprised that they turn off the window border in IE, and yet it seems to still appear.  That&#8217;s because IE&#8217;s default stylesheet puts an inset bevel on every web page.  Turn that off in CSS by writing <u>body { border: 0; }</u>.</li>
<li>Begin to embed your images and other support media as resources, and access them with <a title="The res protocol" href="http://msdn.microsoft.com/workshop/networking/predefined/res.asp">the res:// protocol</a>.</li>
<ul>
<li>One ugly caveat: I have never found any variation of the DirectX PNG alpha filter hack which works with res://, and I&#8217;ve looked often and at some very weird variations.  It is my current belief that a PNG cannot be embedded through res:// and still be fixed for alpha.  This leads to the unfortunate case of requiring at least part of your resources on disk.  If anyone knows a way around this, a heads-up would be <em>greatly</em> appreciated.</li>
</ul>
<li>Set up a system to exchange messages between IE DOM/DHTML/JScript and your application.  There are a bujillion ways to do this, but I tend to use a combination of intercepted element events (mostly OnClick in <a title="NO U INVOKE" href="http://msdn.microsoft.com/workshop/browser/webbrowser/reference/ifaces/dwebbrowserevents/dwebbrowserevents.asp">WebBrowserEvents Invoke</a>,) DOM extension behaviors that allow me to call C++ directly from JScript through <a title="The missing link" href="http://msdn.microsoft.com/workshop/browser/hosting/reference/ifaces/idochostuihandler/getexternal.asp">IDocHostUIHandler::GetExternal()</a>, and executing scripts directly on the DOM object through <a title="Do what I say, DOM" href="http://msdn.microsoft.com/workshop/browser/mshtml/reference/ifaces/window2/execscript.asp">IHTMLWindow2::execScript()</a>.</li>
<li>Build everything in the to be inside a container; make the body itself <u>overflow: none</u>.  This prevents several ugly re-layout quirks which we&#8217;re used to on the web but not in applications, when content gets long.</li>
<ul>
<li>Start the container invisible, and make the black.  That way, during the lag while resources are being loaded, you have a reasonable appearance.  Black flashes look correct.  White flashes look broken.</li>
<li>Set an <u>onload=&#8221;HandleLoad();&#8221;</u> function for the &lt;body&gt;.  That way, you know when all resources are loaded, and thus when it&#8217;s safe to take the invisible clause off of the main container.</li>
<li>Set the main container <u>position:relative</u>, to make absolute positioning of contained elements easier.</li>
</ul>
<li>Build your web page in as a resource, and load it through <a title="How to load a document without about:blank and its white flash." href="http://msdn.microsoft.com/workshop/browser/mshtml/reference/ifaces/document2/write.asp">IHtmlDocument2::write()</a>.  This allows you to load a document at runtime without using about:blank (which most people use, but which causes a brief white flash before your application loads; very unprofessional looking.)  You&#8217;ll need <a title="SafeArrayAccessData" href="http://windowssdk.msdn.microsoft.com/en-us/library/ms221620.aspx">SafeArrayAccessData()</a> and <a title="SafeArrayUnaccessData" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/automat/html/61b482cb-f0a3-4efb-9a68-f373f241e89a.asp">SafeArrayUnaccessData()</a> to use write() safely.  When it comes time to skin or internationalize, and when you&#8217;re dealing with a compile cycle which is just linking, you&#8217;ll thank me for this.</li>
<li>Suppress dragging on links and buttons.  If you don&#8217;t, people will be able to drag them outside the app and onto the desktop as shortcuts, and when followed those shortcuts will lead into your HTML page from the outside (which is, surprisingly, legal.)</li>
<li>Consider compressing your executable, such as with <a title="Universal Packer for Executables" href="http://upx.sourceforge.net/">UPX</a>, which makes resources unreadable externally.</li>
<li>Set an id on your &lt;body&gt;.  The is considered the origin of most events which don&#8217;t have a clear origin, and that means that catching these events is a lot easier (catching by id is the most straightforward way to sort out sources.)</li>
<li>Resist the urge to use runtime styles.  They&#8217;re not worth the problems they cause.</li>
</ul>
<p>That should get the new IE user through some common foibles.  I&#8217;ve probably missed stuff; if you can think of something, lemme know.  I do not currently know of a way to embed flash, unfortunately, without leaving available an extra file.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/checklist-for-embedded-ie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>It Never Ceases To Amaze Me &#8230;</title>
		<link>http://fullof.bs/it-never-ceases-to-amaze-me/</link>
		<comments>http://fullof.bs/it-never-ceases-to-amaze-me/#comments</comments>
		<pubDate>Tue, 02 May 2006 20:50:56 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[General Interest]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/archives/131</guid>
		<description><![CDATA[&#8230; what nonsense investors will buy into.]]></description>
			<content:encoded><![CDATA[<p>&#8230; <a title="Argh." href="http://ajaxian.com/archives/ajaxlaunch-readies-their-ajaxos">what nonsense investors will buy into</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/it-never-ceases-to-amaze-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XMLHttpRequest &#8211; So Close and yet So Far</title>
		<link>http://fullof.bs/the-xmlhttprequest-object-so-close-and-yet-so-far/</link>
		<comments>http://fullof.bs/the-xmlhttprequest-object-so-close-and-yet-so-far/#comments</comments>
		<pubDate>Wed, 26 Apr 2006 00:37:12 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[ECMA / Javascript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Web and Web Standards]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/archives/125</guid>
		<description><![CDATA[To be plain, I think the XMLHttpRequest object is quite wonderful. It&#8217;s a deeper realization than I&#8217;d had when I was talking about RFC2557+ some years ago; rather than binding people to URLs, it frees them to use sockets. Or does it? There is one simple truism that has shown itself over and over again [...]]]></description>
			<content:encoded><![CDATA[<p>To be plain, I think the <a title="The offender" href="http://www.w3.org/TR/XMLHttpRequest/">XMLHttpRequest object</a> is quite wonderful.  It&#8217;s a deeper realization than I&#8217;d had when I was talking about RFC2557+ some years ago; rather than binding people to URLs, it frees them to use sockets.</p>
<p>Or does it?</p>
<p><span id="more-126"></span></p>
<p>There is one simple truism that has shown itself over and over again in programming.  With the new toolset available, I don&#8217;t think there&#8217;s anyone who&#8217;s going to argue that web programming isn&#8217;t programming anymore.  It&#8217;s becoming the case that what we learned in software engineering is starting to show true in web development.  In this respect, XMLHttpRequest shows several promises which aren&#8217;t immediately obvious, and several pitfalls which apparently haven&#8217;t been noticed at all.</p>
<p>The truism to which I refer is that nothing is ever enough for a programmer.  That&#8217;s not as broad as it sounds; it leads to a few very specific and very important realizations which need to be accounted for.</p>
<ol>
<li>Things need to be modular, because we&#8217;ve scaled too far to even consider looking at systems as a whole for small changes.  This is one of the web&#8217;s strongest points, in large part owing to the fundamental nature of SGML as a meta-markup and the brilliant guiding hand who was <a title="Those of us who remember still mourn" href="http://www.postel.org/remembrances/">John Postel</a>.  In this respect, XMLHttpRequest is well on its way to success; the standard is beginning to take into account languages other than ECMA derived scripts, and sockets are already extremely modular.</li>
<li>Things need to be resilient.  There are adequate mechanisms to determine state and error state, though a callback for connection failure would have been nice (though, admittedly, it&#8217;s easy enough to implement, which I&#8217;ll show in a later blog post.)</li>
<li>Things need to attach to their host environment in a natural fashion.  This has traditionally been a problem for languages like <a title="My favorite constraint language" href="http://f1compiler.com/">FormulaONE</a> and <a title="The only constraint language anyone's actually heard of" href="http://www.swi-prolog.org/">Prolog</a>, though it seems <a title="SCARY" href="http://www.mozart-oz.org/">Mozart-Oz</a> is working them out.  This is arguably XMLHttpRequest&#8217;s greatest strength, the foresight of the responseXML property.  Unfortunately, it also helps mask one of the biggest failings (the only serious one that I see, actually.)</li>
<li>There will come a point at which the programmer needs to do something that isn&#8217;t covered.  Languages, libraries, interfaces and settings which allow the programmer to get to the meat and start replacing things are extremely desirable.  Various examples of this abound; few have had as much success as the Standard Template Library or URLs.  In this fashion, XMLHttpRequest appears to have its bases covered, with the responseText mechanism.  You can recieve things that aren&#8217;t XML and work with them how you see fit, which should open up entirely new vistas of usability and blah blah blah if you&#8217;re just willing to do some string parsing.  The idea is that since you can do raw parsing, and since these are sockets, that that allows you to use the network openly.  Herein lies XMLHttpRequest&#8217;s secret flaw &#8211; requestText is crippled by the connection mechanism.  This isn&#8217;t actually good for much more than porting pre-XML legacy web services.</li>
</ol>
<p>See, I started writing this AJAX tutorial, and I was getting all into it.  I started by writing a lightweight DOM calculator to get people used to working on the document model from a scripting language.  It went well, and Uncle Fatty was happy.  The idea was to move from that to writing a chess game.  Since I used to work for one of the big chess service providers, I decided that what I actually ought to write was a client which touched their servers.</p>
<p>Ha ha.  Joke&#8217;s on me.  See, I fell for it too: if it does responseText, then I can just parse whatever I get manually, and everything&#8217;ll be flowers and syrup, right?  So, I start by porting my old <a title="Style 13, Level 2 Datagrams" href="ftp://ftp.chessclub.com/pub/icc/formats/formats.txt">style13-2</a> and <a title="What you expected, huhu" href="http://www.chessclub.com/help/style12">style12</a> parsers, so that I can touch <a title="FICS, the Free Internet Chess Server" href="http://www.freechess.org/">FreeChess</a>, <a title="The Internet Chess Club" href="http://www.chessclub.com/">ChessClub</a> and <a title="US Chess Live, neé GamesParlor" href="http://www.chess-live.com/">ChessLive</a>.  Porting them into <a title="ECMAscript, the basis of JavaScript, JScript, ActionScript and so on" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMA</a> was moderately tehsuck, but to be honest it coulda been worse, so I&#8217;m not complaining <em>much</em>.  Built those on edit boxes, fed it a command, it reacted, and eventually I found the right neurons to make the frog jump, and everything was hoppy.  Spent some time nailing stupid effects from <a title="Rico ... suavé" href="http://openrico.org/">Rico</a> and <a title="No, I'm not putting the periods in.  They look stupid." href="http://script.aculo.us/">Scriptaculous</a> onto it, and generally had myself a fun waste of a couple of hours.  Even hammered out a froody little chat system.</p>
<p>Then, it&#8217;s time to get down to the horror that is nailing XMLHttpRequest onto the service, right?  Because I can parse whatever I receive, so it&#8217;ll be candy and bee-farts, right?  <em>Ha, ha: you sir got screwed</em>.</p>
<p>Y&#8217;see, folks, it&#8217;s called XMLHttpRequest for a reason.  It&#8217;s not really sockets, no matter how much .responseText wants to trick you into thinking it is.  It doesn&#8217;t matter if you can parse whatever random damn thing you receive, because of one ugly detail: <strong>there is no way to make a connection without sending HTTP headers first</strong>.  Now, I&#8217;m sure several people laughing at me for being stupid right now.  On the one hand, I did earn it, and so I deserve it; on the other hand, shut up.  At first I thought I was going to fake it by turning off all the headers, but it turns out that the <a title="setRequestHeader" href="http://www.w3.org/TR/XMLHttpRequest/#dfn-setrequestheader">definition of setRequestHeader</a> essentially prohibits it from being possible at all.  Thing is, it&#8217;s actually very easily reparable.  Now, let&#8217;s pretend for a moment that security is the province of the browser author and not the specification, and that raw sockets haven&#8217;t existed safely in Flash for quite a while already.  Raw sockets themselves aren&#8217;t fundamentally dangerous, and because of the way buffering is bound up in the object, it&#8217;s actually a pretty safe playground.</p>
<p>The more important bit, though, is how <strong><em>ridiculously</em></strong> powerful such a tool would be.  That would, in many ways, be what X always wanted to be: a strong, powerful, scripted, media-rich and gracefully degrading platform for semi-thin network applications.  This has the advantage of having all the &#8220;server&#8221; behavior bound up in the web browsers, already far better standardized and far more powerful than X ever was (I&#8217;m sure I&#8217;ll take flak for saying that.)  My chess client is a good example of what could be powerful here: if I could just say &#8220;no, don&#8217;t send the HTTP headers,&#8221; suddenly I would have a portable rich chess client in trivially little code.</p>
<p>As of now, I have to write a stupid little server whose entire purpose is to intercept AJAX, strip the http headers away, then act as a passthrough to the real server.  It&#8217;s a waste of machine time, a waste of bandwidth and of coding effort.  And, the thing is, I think if we don&#8217;t change the XMLHttpRequest object to accomodate, we&#8217;re going to see a lot of just that kind of behavior.  Sure, the original intent of the object was to allow web browsers to embed browsing behavior in their scripting, essentially allowing scripts to act like clients.  That said, sometimes a mechanism is far more powerful than its original intent (Tim Berners-Lee&#8217;s invention of a way to keep data around the particle collider up to date is a beautiful example, because I&#8217;m using its grandchild to put this argument together right now.)</p>
<p>Sometimes small modifications to allow the programmer better control are worth their weight in gold.  Yes, I realize it was an HTTP request mechanism.  I think it shouldn&#8217;t be.  The allowance is made for raw receiving in responseText, because the utility is obvious.  The allowance should be made for raw sending, too.  I believe it&#8217;s significantly important.  This would be a major step towards portable rich applications with network capabilities.  The actual implementation shift is tiny, well-understood and safe.  This really, <em>really</em> needs to be done.</p>
<p>Of course, once you do that, another fairly serious issue rears its head: that this is a one-directional avenue for communication.  We want to build deeply connected apps, here!  We always have, back through SOAP and DCORBA and X11 and UUX and so on.  There are several docs out there dedicated to the issue of emulating server push, many of which use <a title="Server Push" href="http://www.xulplanet.com/tutorials/mozsdk/serverpush.php">browser extensions</a> or to get the job done.  A much more common answer, since it&#8217;s portable, is polling, which is immensely work- and bandwidth-wasteful, and puts a direct server tax on reducing lag (the faster they poll, the harder you have to work to cover something that really should just be data being sent out.)  There are already tons of applications which work this way, and it&#8217;s just going to get worse.  However, there is an unexplained parameter in the connection list called &#8220;<tt>async</tt>&#8221; which may handle exactly this; if so, the second set of needs is obviated.</p>
<p>On those grounds, I recommend the following alterations to the XMLHttpRequest standard:</p>
<p><u>Overview</u>:</p>
<p>To support the direction that AJAX is already taking itself and to reduce the implementation cost of certain commonly desired features, we will define mechanisms to implement raw connections aside from the default HTTP connections, and to recieve server pushed data without extraneous polling mechanisms.  This requires minor but significant alterations to several parts of the proposed standard, and though the implementation cost of these changes is small, it requires a significant re-evaluation of the potential of the mechanism.</p>
<p>In the definition of <tt>open()</tt>, the modes <tt>GET</tt>, <tt>POST</tt> and <tt>PUT</tt> are required.  Two other methods are questionned, suggesting that there is still flexibility in the mode list.  That&#8217;s good: this is the natural place to add raw connection.  I propose a fourth mode: <tt>RAW</tt>.</p>
<ol>
<li>It seems appropriate that <tt>RAW</tt> be placed in the <tt>MUST</tt> support group; things can be supported and turned off for security reasons, and it&#8217;s important that we be able to write software which can check for these things and then move on.</li>
<li><tt>RAW</tt> suppresses all HTTP negotiation and all HTTP headers.  Headers may not be set with <tt>setRequestHeader()</tt> on a <tt>RAW</tt> method connection.</li>
<li>The current send-recieve <tt>readyState</tt> reporting mechanism would not be sufficient for RAW.  Likely the most appropriate thing to do would be to add another enumerant to the state to represent bidirectional transfer, and to change the state transition rules for <tt>RAW</tt> sockets.  This seems likely to result in the most amenable environment to older code.  The state changes would need to be altered to allow <tt>send()</tt> on a <tt>RAW</tt> socket during any state other than 0.  Because of the editorial note suggesting that <tt>readyState</tt> transition be amended for <tt>HEAD</tt> method requests, it seems the editorial body is already amenable to different <tt>send()</tt> semantics for different <tt>readyState</tt>s.</li>
<ol>
<li>There is the question of how to handle sequential input and sequential output.  Receipt on a RAW socket should probably just append onto the existing buffer, as well as attempting to send while send is already underway (or, the current exception behavior could be maintained for the latter case; that&#8217;s a matter of opinion, but I believe queueing is appropriate.)</li>
<li>There is also the argument that each distinct read be cached in a seperate entry in an array, but without the HTTP transport, there would need to be a way to distinguish packet breakup from seperate transfer; it seems inappropriate, especially that this is meant to be a raw socket, and as such I believe the former answer is superior.</li>
</ol>
</ol>
<p>Actually, the second point as a casualty covers server push, too: with the bidi mode in place, you can safely handle any state transition, so we can just happily fire lots of state changes to cover each server push.  This makes <tt>async</tt> (probably) unnessecary.  Because many deployed AJAX codebases don&#8217;t account for such situations, it may be appropriate to keep the current behavior stable, and to add another HTTP request type that has RAW-style state transitions (this would also neatly handle the <tt>HEAD</tt> problem) called, say, <tt>PUSH</tt>, which would allow the immediate deployment of network applications which aren&#8217;t tied to the client-server pipe mindset.</p>
<p>This approach has several advantages:</p>
<ol>
<li>This approach is similar to concepts already under discussion and uses similar mechanisms, but covers several under consideration issues in less work, and in a way which opens up an extremely powerful new tool.</li>
<li>This approach would have essentially zero impact on deployed code, and would cause no disruptions to existing deployments.</li>
<li>This approach can be handled quite easily in a way to degrade gracefully in situations where a polling style mechanism or something similar provides an adequate substitute.</li>
<li>This approach drastically reduces idle bandwidth for certain network connection behaviors.</li>
<li>This approach is extremely easy to implement at a browser level, consisting essentially of work that&#8217;s already done with bits ripped out.  It is likely to be extremely quickly deployed if adopted by a standards body.  Hacks to approach both of the behaviors this allows are already becoming widespread.  We need to open this floodgate early so that it can be handled in a standard fashion; browsers are already starting to expose their guts, and there&#8217;s a possible browser incongruity in the near future if we don&#8217;t get this handled right now.</li>
<li>This provides an extremely pleasant new avenue for thin client development, and will catch like wildfire in the existing AJAX crowd.</li>
</ol>
<p>Please give these changes serious consideration.  If you support them, get some trackbacks going and get the word out.  This is the sort of thing that not too many people will see the importance of, so it&#8217;s important that the word get around so that the right people can pick up the sound.  If you don&#8217;t agree, tell me why.</p>
<p>XMLHttpRequest is in the hands of two people, and small groups of people are often more likely to listen than large groups.  Their minds can be changed.  Want real HTML network clients?  Help me change them.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/the-xmlhttprequest-object-so-close-and-yet-so-far/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

