<?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>CodeDread Blog &#187; RIA</title>
	<atom:link href="http://www.codedread.com/blog/archives/category/technology/software/web/ria/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codedread.com/blog</link>
	<description></description>
	<lastBuildDate>Mon, 02 Jan 2012 15:30:52 +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>kthoom!</title>
		<link>http://www.codedread.com/blog/archives/2010/04/12/kthoom/</link>
		<comments>http://www.codedread.com/blog/archives/2010/04/12/kthoom/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 12:55:51 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[comics]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.codedread.com/blog/?p=832</guid>
		<description><![CDATA[[clipart]Sometimes I get an idea and I just have to see it through to a point where it will let my brain go. At work Thursday we were all slobbering over Steve&#8217;s iPad and someone brought up how cool the Marvel app is. I had to admit it was much nicer than any piece of [...]]]></description>
			<content:encoded><![CDATA[<p><object type="image/svg+xml" width="100" height="100" style="float:right" data="http://codedread.com/clipart/kthoom.svgz">[clipart]</object>Sometimes I get an idea and I just have to see it through to a point where it will let my brain go.  At work Thursday we were all slobbering over <a href="http://nuthatch.com/blog/">Steve&#8217;s</a> iPad and someone brought up how cool the <a href="http://marvel.com/news/comicstories.11835.download_the_official_marvel_comics_ipad_app">Marvel app</a> is.  I had to admit it was much nicer than any piece of software I&#8217;d used for viewing comics before on my laptop.</p>
<p>In the meantime, I&#8217;ve been carefully watching WebKit creep <a href="https://bugs.webkit.org/show_bug.cgi?id=32624">closer</a> and <a href="https://bugs.webkit.org/show_bug.cgi?id=36567">closer</a> to implementing the <a href="http://www.w3.org/TR/FileAPI/">W3C File API</a> (Go Kinuko!).  Something I&#8217;ve been eagerly waiting for more browsers to do so you can open up local files in <a href="http://svg-edit.googlecode.com/">SVG-edit</a>.</p>
<p>And then it hit me. <span id="more-832"></span></p>
<p>Why not a comic book reader done directly in the browser?</p>
<p>In case you don&#8217;t know, <a href="http://en.wikipedia.org/wiki/Comic_Book_Archive_file">comic book archive files</a> are just ZIP or RAR files containing JPEG images.  Browsers can handle images.  Some browsers can now handle opening local files.  Even binary ones.  So theoretically you could write unzip/unrar in pure JavaScript, extract the JPEGs, turn them into data: URIs and shove them into an &#60;image&#62; element.  You can even do the unzipping in a separate thread using <a href="http://www.whatwg.org/specs/web-workers/current-work/">Web Workers</a>.</p>
<p>Theoretically.</p>
<p><a href="http://code.google.com/p/kthoom/">kthoom</a> was how far I was able to get in a weekend.</p>
<p>Some limitations:</p>
<ul>
<li><a href="http://code.google.com/p/kthoom/issues/detail?id=10">Unzipping is slow</a>.  None of the code has been optimized yet and I&#8217;m probably doing a lot of really stupid things.</li>
<li>Only supports CBZ files, <a href="http://code.google.com/p/kthoom/issues/detail?id=9">not CBR files</a> at the moment &#8211; I am accepting patches</li>
<li>Unzipping is <em>really</em> slow.  I need to <a href="http://code.google.com/p/kthoom/issues/detail?id=8">provide visual progress reporting</a> from the Web Worker thread, I know.</li>
<li>kthoom will crash Firefox 3.6 about half the time.  Firefox nightly (3.7) seems to handle it just fine.  I opened <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=558621">this bug</a>.</li>
<li>Did I mention that unzipping is slow?</li>
</ul>
<p>If I&#8217;m honest, this was really an exercise to see just how easy/hard it would be to do something like this in the browser &#8211; and to get some hands-on experience with Web Workers.  And hey, I&#8217;m not the <a href="http://jsxgraph.uni-bayreuth.de/wp/">first</a> or even <a href="http://github.com/tlrobinson/zipjs">second</a> person to think of doing unzip/deflate in JavaScript either.</p>
<p>It was my first experience writing JavaScript to handle binary files.  It was fun.  It took a weekend.  </p>
<p>Some essential tools:  Firebug, a hex editor, pen &#38; paper, a clear mind, patience.</p>
<p>Now swinging my attention back to stuff I should be working on&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codedread.com/blog/archives/2010/04/12/kthoom/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SVG/Canvas Marketshare: Mar 2010</title>
		<link>http://www.codedread.com/blog/archives/2010/04/05/svgcanvas-marketshare-mar-2010/</link>
		<comments>http://www.codedread.com/blog/archives/2010/04/05/svgcanvas-marketshare-mar-2010/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 01:16:42 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[canvas]]></category>

		<guid isPermaLink="false">http://www.codedread.com/blog/?p=804</guid>
		<description><![CDATA[[clipart]I&#8217;ve updated my marketshare spreadsheet for March 2010 charting the percentage of web users who can view SVG/Canvas: 39.99% Link to spreadsheet P.S. I should mention that this figure does not take into account any user that has a SVG plugin installed or authors who have used the excellent SVG Web or ExplorerCanvas shims, so [...]]]></description>
			<content:encoded><![CDATA[<p><object type="image/svg+xml" width="100" height="100" style="float:right" data="http://codedread.com/clipart/svg.svgz">[clipart]</object>I&#8217;ve updated my marketshare spreadsheet for March 2010 charting the percentage of web users who can view SVG/Canvas:  <b>39.99%</b></p>
<p><iframe width="300" height="350" src="http://spreadsheets.google.com/pub?key=t5TB0_qFXcrkEndedXkKaug&#038;output=html"/><br />
<a href="http://spreadsheets.google.com/pub?key=t5TB0_qFXcrkEndedXkKaug&#038;output=htm">Link to spreadsheet</a></p>
<p>P.S. I should mention that this figure does not take into account any user that has a SVG plugin installed or authors who have used the excellent <a href="http://svgweb.googlecode.com/">SVG Web</a> or <a href="http://excanvas.sourceforge.net/">ExplorerCanvas</a> shims, so this is really a worst-case number.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codedread.com/blog/archives/2010/04/05/svgcanvas-marketshare-mar-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>To And Fro</title>
		<link>http://www.codedread.com/blog/archives/2010/03/31/to-and-fro/</link>
		<comments>http://www.codedread.com/blog/archives/2010/03/31/to-and-fro/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 13:45:23 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[canvas]]></category>

		<guid isPermaLink="false">http://www.codedread.com/blog/?p=782</guid>
		<description><![CDATA[[clipart]Issue 70 has been open for awhile now. In fact it&#8217;s one of just a handful of two-digit bugs left in SVG-edit. Now that all browsers have heralded support for SVG into the future, one might argue that the need for this bug will evaporate in a couple years. However, one would be wrong. First, [...]]]></description>
			<content:encoded><![CDATA[<p><object type="image/svg+xml" width="100" height="100" style="float:right" data="http://codedread.com/clipart/recycling.svgz">[clipart]</object><a href="http://code.google.com/p/svg-edit/issues/detail?id=70" title="Convert SVG to PNG">Issue 70</a> has been open for awhile now.  In fact it&#8217;s one of just a handful of two-digit bugs left in <a href="http://code.google.com/p/svg-edit/issues/list">SVG-edit</a>.  Now that all browsers have heralded support for SVG into the future, one might argue that the need for this bug will evaporate in a couple years.  However, one would be wrong.  First, there are lots of mobile browsers out there.  Second, in some cases it could be easier to just tell the browser how to draw a collection of dots rather than mathematical instructions (think thumbnails).  So how to solve it?<span id="more-782"></span></p>
<p>One thought that occurred to me is if I can shove the SVG into a HTML5 Canvas element, I can then call <a href="http://dev.w3.org/html5/canvas-api/canvas-2d-api.html#dom-canvas-todataurl">toDataURI()</a> on it to generate a PNG.  Unfortunately only <a href="http://lists.w3.org/Archives/Public/public-html/2007Oct/0320.html">Opera seems to have experimented</a> with loading SVG into a Canvas directly.  Also, there are many effects that can be done in SVG that cannot be done in Canvas (filters, fonts, and more).</p>
<p>The <a href="http://dev.w3.org/html5/canvas-api/canvas-2d-api.html#section-canvas-interface-element">Canvas2D API</a> does mention that in the future, the svg:image element may support <a href="http://dev.w3.org/html5/canvas-api/canvas-2d-api.html#the-canvas-interface-element">the CanvasElement DOM interface</a>.  I&#8217;m anticipating Microsoft to announce &#60;canvas&#62; support for IE9 later this year and probably to support this interface on svg:image elements.  It&#8217;s one way they can innovate on the web standards front while they continue to catch up to other modern browsers.</p>
<p>This would be good, but why only the <a href="http://www.w3.org/TR/SVG11/struct.html#ImageElement">svg:image element</a>?  I&#8217;d argue that any element that contains some geometry could gain the toDataURI() method (particularly useful would be the &#60;svg&#62; element here).</p>
<p>Until such time as browsers all get in sync, there are other options.  <a href="http://canvg.googlecode.com/">canvg</a> is one such option and I&#8217;ve been dutifully raising bugs and writing teeny patches but there&#8217;s a long ways to go for a robust solution.</p>
<p>Ultimately this is another case of <a href="http://www.codedread.com/blog/archives/2009/06/27/oh-the-things-youll-learn/">why am I doing something in script that all browsers already know how to do</a>?  You really have to think long-term in the web space, don&#8217;t you? <img src='http://www.codedread.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Other ideas?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codedread.com/blog/archives/2010/03/31/to-and-fro/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SVG-edit: The Secret Sauce</title>
		<link>http://www.codedread.com/blog/archives/2010/01/22/svg-edit-the-secret-sauce/</link>
		<comments>http://www.codedread.com/blog/archives/2010/01/22/svg-edit-the-secret-sauce/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 03:26:05 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svg-edit]]></category>

		<guid isPermaLink="false">http://www.codedread.com/blog/?p=589</guid>
		<description><![CDATA[[clipart]SVG-edit has far exceeded my expectations in the seven months since I&#8217;ve been working on it. The people I&#8217;ve met there have been amazing and it&#8217;s been really fun to watch the project grow both in members and in capabilities. Without the people working on it, people like Alexis (now the top contributor) and wormsxulla [...]]]></description>
			<content:encoded><![CDATA[<p><object type="image/svg+xml" width="100" height="100" style="float:right" data="http://codedread.com/clipart/svgedit.svgz">[clipart]</object><a href="http://svg-edit.googlecode.com/">SVG-edit</a> has far exceeded my expectations in the seven months since I&#8217;ve been working on it.  The people I&#8217;ve met there have been amazing and it&#8217;s been really fun to watch the project grow both in members and in capabilities.  Without the people working on it, people like <a href="http://a.deveria.com/">Alexis</a> (now the top contributor) and <a href="http://vertex.corpsmoderne.net/main.php?g2_itemId=114">wormsxulla</a> (whip-cracker on UI translations) and others, there wouldn&#8217;t <em>be</em> a project &#8211; that much is obvious.  But would you like to know the secret sauce in the SVG-edit project?  Of course you would.<span id="more-589"></span></p>
<p><object type="image/svg+xml" width="100" height="100" style="float:right" data="http://codedread.com/clipart/googlecode.svgz">[clipart]</object>One of the surprising factors in SVG-edit has been using <a href="http://googlecode.com/">GoogleCode</a> in combination with <a href="http://svnbook.red-bean.com/">Subversion</a>.  Let me tell you why:</p>
<h3 id="linked">Linked Information</h3>
<p>Everything is an issue in SVG-edit.  This is the way we keep track of things to do.  This is the way other people discover things they can work on.  This is the way we prioritize features for a release.  This is the way we identify <a href="http://code.google.com/p/svg-edit/issues/list?can=2&#038;q=label%3AGood-First-Bug">good first bugs</a> for new hackers to work on.  This is the way we sort problems into browser-specific, usability, interoperability categories.  This is even where we put requirements and design decisions.</p>
<p>Making almost everything an issue is good because GoogleCode has some magic that detects revision commit messages and message comments and inter-links the two.  For instance, if I fix <a href="http://code.google.com/p/svg-edit/source/detail?r=1275">issue 436</a>, I might do:</p>
<p><code>$ svn ci -m "Fix Issue 436: Fixed the foo thing"</code></p>
<p>This shows up in GoogleCode <a href="http://code.google.com/p/svg-edit/source/detail?r=1275">here</a> and provides you a link to the issue.</p>
<p>Now in the issue itself, I can mark it as Fixed and mention the revision that fixed the issue:</p>
<p><code>Fixed in r1275</code></p>
<p>Once again, GoogleCode provides a link to the revision when you <a href="http://code.google.com/p/svg-edit/issues/detail?id=436#c1">look at the bug</a>.</p>
<p>This kind of tracking takes a little bit of discipline, but it&#8217;s not that bad and the payoff is worth it.  It really helps other developers keep tabs on what&#8217;s been solved where and how.</p>
<h3 id="host-it">Host It</h3>
<p>Since SVG-edit is a 100% client-side application (i.e. everything happens in the browser, no server component), and since Subversion allows you to <a href="http://svnbook.red-bean.com/en/1.5/svn.advanced.props.file-portability.html#svn.advanced.props.special.mime-type">specify MIME types</a> by setting properties on files, we can convince GoogleCode to host the entire project in runnable form for the purposes of demo-ing the code.</p>
<p>This applies to the trunk as well as any branches and tags.  For instance, you can actually see the evolution of SVG-edit over time:</p>
<ul>
<li><a href="http://svg-edit.googlecode.com/svn/branches/1.0/svg-editor.html">SVG-edit 1.0</a></li>
<li><a href="http://svg-edit.googlecode.com/svn/branches/2.0/svg-editor.html">SVG-edit 2.0</a></li>
<li><a href="http://svg-edit.googlecode.com/svn/branches/2.1/editor/svg-editor.html">SVG-edit 2.1</a></li>
<li><a href="http://svg-edit.googlecode.com/svn/branches/2.2/editor/svg-editor.html">SVG-edit 2.2</a></li>
<li><a href="http://svg-edit.googlecode.com/svn/branches/2.3/editor/svg-editor.html">SVG-edit 2.3</a></li>
<li><a href="http://svg-edit.googlecode.com/svn/branches/2.4/editor/svg-editor.html">SVG-edit 2.4</a></li>
</ul>
<p>Or you can look at the <a href="http://svg-edit.googlecode.com/svn/trunk/editor/svg-editor.html">latest trunk build</a>.</p>
<p>Or you can host the file in a web page by using <code>&#60;iframe&#62;</code> element like <a href="http://www.codedread.com/blog/archives/2009/06/19/embed-an-svg-editor-on-your-web-page/">I&#8217;ve talked about before</a>.</p>
<p>The fact that GoogleCode servers host the repo and also support web serving the content is immensely powerful:  it means we don&#8217;t have to administer a source code repository and we don&#8217;t have to pay for a dedicated server or bandwidth costs to demo the software.  Furthermore, because it&#8217;s a browser-based app, users don&#8217;t have to download anything, they can try out the code right on the spot.</p>
<p>Incidentally this is also one of the strengths of a web app in the first place:  Zero downloads.</p>
<h3 id="regression">Tracking Down A Regression</h3>
<p>GoogleCode&#8217;s hosting of the svn repo doesn&#8217;t stop at branches/tags.  In fact, you can look at <strong>ANY</strong> revision in the browser directly.  Coupled with the fact that we don&#8217;t really require a build step means that it is very easy to track down a regression.</p>
<p><a href="http://git-scm.com/">git</a> has this cool feature called <a href="http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html">bisect</a> that allows you to hunt down when a regression occurred by seeking forward/backward across revisions in increasingly smaller increments, building each revision and testing until you find the first revision in a branch that exhibited a problem.</p>
<p>We can do this much easier in SVG-edit using Subversion on GoogleCode.  Let&#8217;s say one day we notice a problem in the trunk and we&#8217;re at r1200.  Well, we might decide to try out the editor at <a href="http://svg-edit.googlecode.com/svn-history/r1000/trunk/editor/svg-editor.html">revision 1000</a> to see if the problem existed then.  If the problem did not exist, we hop ahead 100 revisions to <a href="http://svg-edit.googlecode.com/svn-history/r1100/trunk/editor/svg-editor.html">r1100</a> &#8211; was the problem present then?  If so, hop back 50 revisions to <a href="http://svg-edit.googlecode.com/svn-history/r1050/trunk/editor/svg-editor.html">r1050</a>.  Repeat in the browser until you isolate the earliest revision where the problem occurred, then add a comment to the issue and go <a href="http://code.google.com/p/svg-edit/source/detail?r=1060">review that revision</a>.</p>
<p>Totally amazing capability and no more difficult than changing a revision number in the browser location bar.  I have to credit <a href="http://narendra.techfandu.org/">Narendra Sisodya</a>, the project founder, with uncovering that little nugget. </p>
<h3 id="non-nirvana">Not a Nirvana</h3>
<p>There are still some grips/nits I have with GoogleCode+Subversion:</p>
<ul>
<li>Being able to serve gzipped JavaScript would be great</li>
<li>Being able to display the current revision number in SVG-edit</li>
<li>The wiki markup needs significant improvements</li>
</ul>
<p>But this is free hosting and project management software, so I can&#8217;t complain too loudly. <img src='http://www.codedread.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.codedread.com/blog/archives/2010/01/22/svg-edit-the-secret-sauce/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Just Ship It!</title>
		<link>http://www.codedread.com/blog/archives/2010/01/11/just-ship-it/</link>
		<comments>http://www.codedread.com/blog/archives/2010/01/11/just-ship-it/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 20:31:29 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[comics]]></category>
		<category><![CDATA[svg-edit]]></category>

		<guid isPermaLink="false">http://blog.codedread.com/archives/2010/01/11/just-ship-it/</guid>
		<description><![CDATA[[clipart]So Alexis and wormsxulla and all the translators and anyone who opened a bug against SVG-edit should really just be proud, because SVG-edit 2.4, codenamed Arbelos, is now released. Try out the DEMO now. For those who have more time to kill, here are a couple screencasts I tried to make that demonstrate the new [...]]]></description>
			<content:encoded><![CDATA[<p><object type="image/svg+xml" width="100" height="100" style="float:right" data="http://codedread.com/clipart/svgedit.svgz">[clipart]</object>So <a href="http://a.deveria.com/">Alexis</a> and <a href="http://vertex.corpsmoderne.net/main.php?g2_itemId=114">wormsxulla</a> and all the translators and anyone who opened a bug against <a href="http://svg-edit.googlecode.com/">SVG-edit</a> should really just be proud, because SVG-edit 2.4, codenamed Arbelos, is now released.  Try out the <a href="http://svg-edit.googlecode.com/svn/branches/2.4/editor/svg-editor.html">DEMO</a> now.<span id="more-550"></span></p>
<p>For those who have more time to kill, here are a couple screencasts I tried to make that demonstrate the new features:</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/zpC7b1ZJvvM&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/zpC7b1ZJvvM&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/mDzZEoGUDe8&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/mDzZEoGUDe8&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>And there&#8217;s <a href="http://code.google.com/p/svg-edit/issues/list?can=2&#038;q=label%3ANeededFor-2.5">lots more</a> coming in SVG-edit 2.5 (codenamed Bicorn) that we&#8217;ll be talking about in the future.</p>
<p>To celebrate, here&#8217;s another comic I made using SVG-edit (<a href="http://www.codedread.com/comics/003.svgz">view full size</a>):</p>
<p><object type="image/svg+xml" data="http://www.codedread.com/comics/003.svgz" width="600" height="900"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codedread.com/blog/archives/2010/01/11/just-ship-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Houston, the SMIL has landed</title>
		<link>http://www.codedread.com/blog/archives/2009/01/15/houston-the-smil-has-landed/</link>
		<comments>http://www.codedread.com/blog/archives/2009/01/15/houston-the-smil-has-landed/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 06:38:53 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[smil]]></category>

		<guid isPermaLink="false">http://blog.codedread.com/archives/2009/01/15/houston-the-smil-has-landed/</guid>
		<description><![CDATA[This day was five-and-a-half years in the making: the initial patch to add SMIL support has landed on Mozilla trunk. SMIL is the Open Web way of doing declarative animation, I use it on my site here and there via FakeSmile. This Mozilla patch is partial support for SMIL within SVG only (not HTML). Note [...]]]></description>
			<content:encoded><![CDATA[<p><object type="image/svg+xml" width="100" height="100" style="float:right" data="http://codedread.com/clipart/mozilla.svgz"><span/></object><object type="image/svg+xml" width="100" height="100" style="float:right" data="http://codedread.com/clipart/smile.svgz"><span/></object><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=216462#c181">This day</a> was five-and-a-half years in the making:  the initial patch to add SMIL support has landed on Mozilla trunk.  SMIL is the Open Web way of doing declarative animation, I use it on my site here and there via <a href="http://leunen.d.free.fr/fakesmile/index.html" title="FakeSmile is a JavaScript workaround to give browsers some support for SMIL+SVG">FakeSmile</a>.  This Mozilla patch is partial support for SMIL within SVG only (not HTML).  Note that SMIL support is disabled in the build by default, as <a href="http://weblogs.mozillazine.org/roc/archives/2009/01/post31_plans.html">roc says</a> &#8220;we should enable it when we&#8217;ve got enough implemented that we wouldn&#8217;t feel embarrassed about shipping it. &#8221; &#8211; but this is a significant step forward.</p>
<p>Thanks and congratulations go to <a href="http://blog.dholbert.org/2009/01/smil-support-has-landed.html" title="Daniel Holbert's blog">Daniel</a>, <a href="http://brian.sol1.net/svg/">Brian</a> and <a href="http://weblogs.mozillazine.org/roc/">Robert</a>!  Also thanks to <a href="http://my.opera.com/MacDev_ed/blog/">Erik</a> and <a href="http://ln.hixie.ch/">Ian</a> for putting some SMIL tests into Acid3.  Not that this had anything to do with it.  Oh, no. <img src='http://www.codedread.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Opera has supported SMIL in SVG for a couple years now.  Anyone want to place bets on who will be the second to release a browser that supports it? Mozilla? Apple? Google?  Microsoft?  What, did I say something funny?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codedread.com/blog/archives/2009/01/15/houston-the-smil-has-landed/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Parameterizing SVG and HTML</title>
		<link>http://www.codedread.com/blog/archives/2008/07/25/parameterizing-svg-and-html/</link>
		<comments>http://www.codedread.com/blog/archives/2008/07/25/parameterizing-svg-and-html/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 17:11:20 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[whatwg]]></category>

		<guid isPermaLink="false">http://blog.codedread.com/archives/2008/07/25/parameterizing-svg-and-html/</guid>
		<description><![CDATA[Hallvord R.M. Steen (an Opera employee and member of the HTML WG) was kind enough to create a bug regarding an issue I had raised a few months back. It is currently not possible inside an embedded SVG to determine the parameters sent in from HTML:object if the two documents are on different domains. This [...]]]></description>
			<content:encoded><![CDATA[<p><object type="image/svg+xml" width="100" height="100" align="right" hspace="10" data="http://codedread.com/clipart/html.svgz"><span/></object><a href="http://my.opera.com/hallvors/blog/">Hallvord R.M. Steen</a> (an <a href="http://www.opera.com/">Opera</a> employee and member of the <a href="http://www.w3.org/html/wg/">HTML WG</a>) was kind enough to create a <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=5846" title="Allow embedded SVG to get the parameters sent in from HTML:object">bug</a> regarding an issue I had raised a few months back.  It is currently not possible inside an embedded SVG to determine the <a href="http://www.w3.org/TR/REC-html40/struct/objects.html#h-13.3.2">parameters</a> sent in from <a href="http://www.w3.org/TR/REC-html40/struct/objects.html#h-13.3">HTML:object</a> if the two documents are on different domains.  This appears to be a hole in the HTML4 spec, which doesn&#8217;t really address cross-domain security concerns for the HTML:object element.<span id="more-478"></span></p>
<p>At the moment, the issue is dead in the water.  <a href="http://ln.hixie.ch/">Ian Hickson</a> suggested that <a href="http://tools.ietf.org/html/rfc3986#section-3.4" title="Query Part of the Uniform Resource Identifier">query parameters</a> could solve this issue.  However, query parameters are part of the <abbr title="Uniform Resource Identifier">URI</abbr>.  In my experiments with PHP, I found that query parameters are a good way to ensure the browser actually re-fetches a document and doesn&#8217;t rely on the document in the cache.   This means that using query parameters would defeat one of the purposes of parameterizing the SVG in the first place (one document in the browser cache that could be used for many purposes).</p>
<p>It&#8217;s sad because plugins like Flash have the luxury of being able to <a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_16417">pass parameters</a> into their content, but we can&#8217;t do that for content the browser understands natively (like SVG and HTML).  I failed to convince the <a href="http://realtech.burningbird.net/semweb/accessibility-and-microformats/#comment-471">benevolent dictator</a> that this is an important capability that the open web stack lacks.</p>
<p>I think this would be a nice way to turn bits of HTML/SVG into simple components without requiring script on the embedding side and without requiring heavier technologies like XBL and/or waiting for browser support of postMessage().  For example, it seems like web page authors using things like Adsense could benefit from this by not having to include foreign script in their pages, but apparently Google has no interest in this.</p>
<p>Eric Meyer&#8217;s <a href="http://meyerweb.com/eric/thoughts/2008/07/23/any-element-linking-demo/#comment-395213">link-anywhere proposal</a> inspired me to at least float this issue in my blog in case someone else thinks it important.  For now, <a href="http://www.w3.org/Bugs/Public/show_activity.cgi?id=5846">I&#8217;m tired</a>.  Hm, I wonder if I can use the <a href="http://ajaxian.com/archives/windowname-meet-dojoxiowindowname">window.name hack</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codedread.com/blog/archives/2008/07/25/parameterizing-svg-and-html/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Web Apps: The Critical Difference</title>
		<link>http://www.codedread.com/blog/archives/2008/04/21/web-apps-the-critical-difference/</link>
		<comments>http://www.codedread.com/blog/archives/2008/04/21/web-apps-the-critical-difference/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 04:58:31 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[air]]></category>

		<guid isPermaLink="false">http://blog.codedread.com/archives/2008/04/21/web-apps-the-critical-difference/</guid>
		<description><![CDATA[One reason I think Web Applications (as opposed to the now watered-down term of Rich Internet Applications) are great for users and developers, is because they do not need to be installed directly on the user&#8217;s computer. This is one thing I think Adobe has misunderstood about the &#8216;RIA&#8217; revolution with AIR. Caveat: I&#8217;ll be [...]]]></description>
			<content:encoded><![CDATA[<p><object type="image/svg+xml" width="100" height="100" align="right" hspace="10" data="http://codedread.com/clipart/air.svgz"><span/></object>One reason I think <a href="http://starkravingfinkle.org/blog/2008/04/ria-is-dead-long-live-web-applications/">Web Applications</a> (as opposed to the now watered-down term of Rich Internet Applications) are great for users and developers, is because they do not need to be installed directly on the user&#8217;s computer.  This is one thing I think Adobe has misunderstood about the &#8216;RIA&#8217; revolution with <a href="http://labs.adobe.com/technologies/air/" title="Adobe Integrated Runtime">AIR</a>.  <span id="more-457"></span></p>
<p>Caveat: I&#8217;ll be the first to admit I have zero experience with AIR (or <a href="http://labs.mozilla.com/2007/10/prism/">Mozilla Prism</a> for that matter), so if anyone can educate me, please feel free below.</p>
<p>If I&#8217;m a desktop application developer, I&#8217;ve got to decide on a language and framework.  Is it easier to build an application using HTML+CSS+DOM+JavaScript (+SVG+XUL) or to use Flex+ActionScript or to use C#+CLR or to use Java+JDK or to use C++ with Qt/Gnome?</p>
<p>I think Adobe <em>is</em> right that picking from the &#8220;Open Web&#8221; stack is a slightly easier in-road to application development due to the declarative nature of the markup and the lack of a compilation step.  But I don&#8217;t think it&#8217;s why web applications are seeing such an upsurge.  To me, the answer is the complete lack of a need to worry about deployment (web app developer) or installation (web browser user).  The fact that the web app developer does not have to maintain older legacy code is also a <em>huge</em> win.  Once a new version of your application is released, no one in the world is using your older code, it&#8217;s instantly retired.</p>
<p>Here&#8217;s a snip from <a href="http://livedocs.adobe.com/air/1/devappshtml/help.html?content=updating_apps_1.html">AIR&#8217;s own documentation</a> where it states:</p>
<blockquote cite="http://livedocs.adobe.com/air/1/devappshtml/help.html?content=updating_apps_1.html"><p>&#8220;On Mac OS, to install an updated version of an application, the user must have adequate system privileges to install to the application directory. On Windows, a user must have administrative privileges.</p>
<p>If the updated version of the application requires an updated version of the runtime, the new runtime version is installed. To update the runtime, a user must have administrative privileges for the computer.&#8221;</p></blockquote>
<p>To me, the bits about the runtime sounds like the same sort of mess that Java and .NET application deployment have with mismatched JREs and CLRs for the past decade.  Hopefully changes to the underlying platform are kept minimally disruptive &#8211; but the developer really has no control over that.</p>
<p>It does sound like Adobe is trying to make it easier for application developers to employ auto-update functionality (incidentally, <a href="http://java.sun.com/developer/technicalArticles/javase/java6u10/index.html#dt">so is Sun</a>).  It just sucks that each developer has to worry about this individually still.</p>
<p>To me, the sweet spot with these Light-weight Offline Application Frameworks (LOAFs?) will be when enabling auto-update is as easy as it is with Firefox extension development.  But that still doesn&#8217;t solve the problem of every user having to first download the runtime to &#8216;bootstrap&#8217; him/herself.</p>
<p>And yes I&#8217;m aware that there are some big down-sides to Web Applications.  Lessee,  differing behavior of platforms (user agents) is the biggest cost.  Lack of local storage (which may change in a decade with HTML5) and the cost of a server are also biggies.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codedread.com/blog/archives/2008/04/21/web-apps-the-critical-difference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fake Smile</title>
		<link>http://www.codedread.com/blog/archives/2008/03/16/fake-smile/</link>
		<comments>http://www.codedread.com/blog/archives/2008/03/16/fake-smile/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 04:10:43 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[smil]]></category>

		<guid isPermaLink="false">http://blog.codedread.com/archives/2008/03/16/fake-smile/</guid>
		<description><![CDATA[David Leunen has released a new JavaScript library to fake SMIL for modern browsers that do not yet support declarative animation (Firefox 3.0- and Safari 3.0-). The nice thing about this is that it uses existing standards, so that when Mozilla and WebKit finally implement SMIL, this script will avoid executing. On that day, suddenly [...]]]></description>
			<content:encoded><![CDATA[<p><object type="image/svg+xml" width="100" height="100" align="right" hspace="10" data="http://codedread.com/clipart/smile.svgz"><span/></object><a href="http://fakesmil.blogspot.com/">David Leunen</a> has released a new <a href="http://leunen.d.free.fr/fakesmile/" title="FakeSmile">JavaScript library</a> to fake <a href="http://www.w3.org/AudioVideo/" title="Synchronized Multimedia Integration Language">SMIL</a> for modern browsers that do not yet support declarative animation (Firefox 3.0- and Safari 3.0-).  The nice thing about this is that it uses existing standards, so that when Mozilla and WebKit finally implement SMIL, this script will avoid executing.  On that day, suddenly animations will become less processor-intensive.  I&#8217;m all about <a href="http://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a>, but I&#8217;m also not above occasionally faking it a little to experiment with cool features.  <span id="more-440"></span></p>
<p>As with all experiments of late, you need a cool browser like <a href="http://www.opera.com/">Opera</a>, <a href="http://www.mozilla.org/firefox/">Firefox</a> or <a href="http://www.apple.com/safari">Safari</a> to see this stuff.  I&#8217;d be interested to hear if Konqueror 4.0 supports it.  Internet Explorer will just not do, I&#8217;m afraid.</p>
<p id="where-i-use-smil">I currently use SMIL in <a href="http://www.codedread.com/menu.svg">my menu</a> above, in the leering FakeSmile icon to the right <strike>(which I&#8217;ve inlined to see what happens when it gets aggregated in feed readers like <a href="http://intertwingly.net/code/venus/">Planet Venus</a>)</strike>, and now in my comment box when you focus and blur it.</p>
<p>Yes, this is just <abbr title="shits and giggles">shiggles</abbr> and not very productive &#8211; but I&#8217;m <a href="http://realtech.burningbird.net/design/having-ones-cake/">not alone</a> in experimenting with some advanced web features on my blog.</p>
<p>Yes, SMIL intermixes &#8220;presentational&#8221;-type markup with &#8220;content&#8221; markup &#8211; but <a href="http://www.w3.org/TR/2008/WD-timesheets-20080110/">SMIL Timesheets</a> looks to me like an attempt by the SYMM Working Group to address this.  Maybe something in the future for FakeSmile to support?</p>
<p>And yes, it&#8217;s kinda fun.  SMIL is the blink tag of the new millenium&#8230;</p>
<p>Oh, and in case you <a href="#where-i-use-smil">missed it</a> above, I&#8217;ve started using SMIL in my blog&#8217;s <a href="http://blog.codedread.com/?p=440&#038;preview=true#comment">comment</a> textarea &#8211; that&#8217;s XHTML, not SVG.  The FakeSmile library supports a limited subset of SMIL functionality in not just SVG content but on any attribute in a XML-based language (provided you properly namespace where required, like in XHTML):</p>
<div class="code">&#60;textarea rows=&#8221;5&#8243; &#8230;&#62;<br/><b>&#160;&#160;&#60;smil:animate attributeName=&#8221;rows&#8221; from=&#8221;5&#8243; to=&#8221;10&#8243; dur=&#8221;350ms&#8221; begin=&#8221;focus&#8221; end=&#8221;blur&#8221; fill=&#8221;freeze&#8221; /&#62;</b><br/>&#60;/textarea&#62;</div>
<p>That&#8217;s what makes XHTML so attractive to me &#8211; the X is for eXtensibility.  While I still support the effort, the <a href="http://esw.w3.org/topic/HTML/SVGInTextHTML">current HTML 5 activity</a> is mostly focused on SVG (and to a lesser extent MathML) integration with text/html.  I hope they do address more <a href="http://www.intertwingly.net/blog/2007/08/02/HTML5-and-Distributed-Extensibility">flexible extensibility</a> within HTML5 at a later date.  It would be great if someone had already done <a href="http://www.w3.org/TR/NOTE-HTMLplusTIME">HTML+SMIL</a> so there was some basis off which to work.  Snarkiness aside, I will admit to not understanding the ins-and-outs of namespaces within HTML and all the problems it poses, but I&#8217;m trying to learn in my spare time&#8230;</p>
<p>One semi-amusing footnote:  You won&#8217;t see the textarea expand when you focus it in Opera.  This is because Opera supports SMIL-in-SVG already, so the FakeSmile script is not executed (short-circuited).  It would be great if Opera went ahead with <a href="http://www.w3.org/TR/XHTMLplusSMIL/">XHTML+SMIL</a> support.  I&#8217;m not sure why that hasn&#8217;t happened yet&#8230;</p>
<p><i>[Update: David has fixed his library to allow Opera to use the library for XHTML+SMIL as well as interpolate between properties with units (i.e. 2em).]</i></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codedread.com/blog/archives/2008/03/16/fake-smile/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Let the Web Hacker Wars Begin</title>
		<link>http://www.codedread.com/blog/archives/2006/12/19/let-the-web-hacker-wars-begin/</link>
		<comments>http://www.codedread.com/blog/archives/2006/12/19/let-the-web-hacker-wars-begin/#comments</comments>
		<pubDate>Tue, 19 Dec 2006 07:01:39 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Laszlo]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.codedread.com/archives/2006/12/19/let-the-web-hacker-wars-begin/</guid>
		<description><![CDATA[The Next Big Thing from Laszlo, OpenLaszlo 4 (OL4) codenamed &#8220;Legals&#8221;, is nearing completion and we should see a first Beta in January. This is the release of OpenLaszlo that will be able to compile to more than one runtime, allowing web developers to target either Flash or DHTML. In future versions of OL we [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://weblog.openlaszlo.org/archives/2006/12/legals-becomes-ol4-beta-approaching/">Next Big Thing</a> from Laszlo, OpenLaszlo 4 (OL4) codenamed &#8220;Legals&#8221;, is nearing completion and we should see a first Beta in January.  This is the release of OpenLaszlo that will be able to compile to more than one runtime, allowing web developers to target either Flash or DHTML.  In future versions of <span class="definition" title="OpenLaszlo">OL</span> we might see more runtimes added to support Microsoft&#8217;s WPF/E and W3&#8242;s SVG and SMIL.</p>
<p>It will be interesting to see how web development will change in the coming year, as DHTML toolkits like <a href="http://dojotoolkit.org/">Dojo</a>, <a href="http://developer.yahoo.com/yui/">YUI</a>, <a href="http://www.mochikit.com/">MochiKit</a>, <a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a>, <a href="http://ajax.asp.net/Default.aspx">Microsoft Atlas</a> continue to mature, <a href="http://www.adobe.com/products/flex/">Adobe&#8217;s Flex 2</a> continues making inroads and <a href="http://msdn2.microsoft.com/en-us/asp.net/bb187358.aspx">Microsoft&#8217;s WPF/E</a> deployment gets underway in earnest.  Meanwhile, the venerable <a href="http://java.sun.com/">Java Platform</a> is still evolving, parts of it now open source and <a href="http://java.sun.com/javase/6/">Jave SE 6</a> recently becoming available.</p>
<p>All of these are signs that seasoned web developers are finally ready to move up the tool-chain stack away from the simple text editor.  I think key things to look for in differentiation between the various frameworks are:</p>
<ul>
<li><strong>Tool Support</strong>:  What kind of developer tools are out there to support development in your framework/language(s) of choice?  From what I understand, Adobe has always been good with developer tools.  On the Java side, there&#8217;s <a href="http://www.netbeans.org/">NetBeans</a>.  On the DHTML side, there&#8217;s Eclipse&#8217;s <a href="http://www.eclipse.org/webtools/development/main.html">wtp</a>.  Maybe it&#8217;s time I looked into <a href="http://www.eclipse.org/laszlo/">IDEforLaszlo</a> in the New Year.  Do your tools allow you to quickly and easily test and debug your code?</li>
<li><strong>Community Involvement</strong>:  Not necessarily just an open source community, but a vibrant one with lots of energy and open participation.  Of course, a transparent development process will help here.</li>
<li><strong>Cross-Platform Support</strong>:  You need to support all of the &#8220;high tier&#8221; browsers like Firefox, Opera and Safari and you need to support multiple operating systems equally.  People are passionate about their browsers and operating systems.   Projects need to be careful not to lose the next hot web developer to a more compatible framework.</li>
<li><strong>Ease of Deployment</strong>:  How easy is it to change one line of code and deploy that change?  That was always one of the beauties of the early days of the web &#8211; simply update your HTML file and save it on the server</li>
<li><strong>Beware Of Vendor Lock-In</strong>:  This is going to sound very anti-corporate, but the truth is that when one company controls the toolkits and the standards, there is always the potential for that project to be shelved or neglected or dropped in favour of new ventures.  This ends up taking its toll on the web developer.  With open standards and open source toolkits, developers can shield themselves from the whims of corporations.</li>
</ul>
<p>Needless to say, competition will engender a very exciting year, with the winners being the web community as projects vie for the hearts of hackers everywhere, sparking further innovation.  I hereby dub 2007 as the year of the &#8220;Web Hacker Wars&#8221; &#8211; let the battle begin!</p>
<p><script type="text/javascript" src="http://www.codedread.com/googleads.js"></script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codedread.com/blog/archives/2006/12/19/let-the-web-hacker-wars-begin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

