<?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>Christian Cantrell</title>
	<atom:link href="http://blogs.adobe.com/cantrell/feed" rel="self" type="application/rss+xml" />
	<link>http://blogs.adobe.com/cantrell</link>
	<description>Web Platform Application Developer, Product Manager, and Evangelist</description>
	<lastBuildDate>Thu, 03 May 2012 14:23:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>A Complete Tour of Adobe Shadow in 10 Minutes (including integration with LiveReload)</title>
		<link>http://blogs.adobe.com/cantrell/archives/2012/05/a-complete-tour-of-adobe-shadow-in-10-minutes-including-integration-with-livereload.html</link>
		<comments>http://blogs.adobe.com/cantrell/archives/2012/05/a-complete-tour-of-adobe-shadow-in-10-minutes-including-integration-with-livereload.html#comments</comments>
		<pubDate>Thu, 03 May 2012 14:23:59 +0000</pubDate>
		<dc:creator>Christian Cantrell</dc:creator>
				<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/cantrell/?p=1211</guid>
		<description><![CDATA[I recently demoed Adobe Shadow during the FITC keynote, but I didn&#8217;t have much time. There was more I wanted to show, so I decided to make a video of my segment and include the parts I had to leave out. I think I managed to cover all the most important features of Shadow in [...]]]></description>
			<content:encoded><![CDATA[<p>I recently demoed Adobe Shadow during the FITC keynote, but I didn&#8217;t have much time. There was more I wanted to show, so I decided to make a video of my segment and include the parts I had to leave out. I think I managed to cover all the most important features of Shadow in almost exactly ten minutes.</p>
<p>The video below covers:</p>
<ul>
<li>Configuring Adobe Shadow.</li>
<li>A demo of Shadow on four devices simultaneously.</li>
<li>Integrating Adobe Shadow and <a href="http://livereload.com/">LiveReload</a>.</li>
</ul>
<div align="center">
<iframe width="640" height="360" src="http://www.youtube.com/embed/7cSLvRlr1iM" frameborder="0" allowfullscreen></iframe>
</div>
<p><br/></p>
<p>If you want to learn more about Adobe Shadow and/or download it and give it a try, check out the <a href="http://html.adobe.com/toolsandservices/shadow/">Shadow page on html.adobe.com</a>. For more information on Shadow and LiveReload, see <a href="http://blogs.adobe.com/shadow/2012/04/24/shadow-livereload-workflow/">this post</a> on the Adobe Shadow Team Blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/cantrell/archives/2012/05/a-complete-tour-of-adobe-shadow-in-10-minutes-including-integration-with-livereload.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My FITC Slides are Online</title>
		<link>http://blogs.adobe.com/cantrell/archives/2012/04/my-fitc-slides-are-online.html</link>
		<comments>http://blogs.adobe.com/cantrell/archives/2012/04/my-fitc-slides-are-online.html#comments</comments>
		<pubDate>Wed, 25 Apr 2012 18:20:34 +0000</pubDate>
		<dc:creator>Christian Cantrell</dc:creator>
				<category><![CDATA[Conferences]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/cantrell/?p=1203</guid>
		<description><![CDATA[I just put the slides from my FITC session up if you want to check them out. The presentation is called The New Playground: Adobe and HTML5. Before you start looking it, a few quick notes: It&#8217;s written in HTML, and since I wasn&#8217;t thinking about sharing it when I put it together, it probably [...]]]></description>
			<content:encoded><![CDATA[<div align="center"><img src="http://blogs.adobe.com/cantrell/files/2012/04/fitc_2012_session_2.jpg" alt="" width="640" height="316" /></div>
<p>I just put the <a href="http://www.christiancantrell.com/adobe/fitc_toronto_2012/">slides from my FITC session</a> up if you want to check them out. The presentation is called <em>The New Playground: Adobe and HTML5</em>. Before you start looking it, a few quick notes:</p>
<ul>
<li>It&#8217;s written in HTML, and since I wasn&#8217;t thinking about sharing it when I put it together, it probably only works in Chrome, Safari, and Firefox.</li>
<li>Use the arrow keys to navigate forward and back through the deck.</li>
<li>A lot of the presentation was demos, so I added links to videos that should be sufficient substitues.</li>
<li>The slides were designed for 1024&#215;768, so they might look scrunched on your big monitor.</li>
<li>If you view the slide that talks about filters effects in <a href="http://tools.google.com/dlpage/chromesxs">Chrome Canary</a>, clicking on the filter names in the list applies them to the image.</li>
</ul>
<p><a href="http://www.christiancantrell.com/adobe/fitc_toronto_2012/">The slides are available here</a>. If you have any questions, feel free to post in the comments. (Session photo by <a href="http://twitter.com/#!/treesrustle">@treesrustle</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/cantrell/archives/2012/04/my-fitc-slides-are-online.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Building the Keyboard from TRON Legacy with Web Technologies</title>
		<link>http://blogs.adobe.com/cantrell/archives/2012/04/building-the-keyboard-from-tron-legacy-with-web-technologies.html</link>
		<comments>http://blogs.adobe.com/cantrell/archives/2012/04/building-the-keyboard-from-tron-legacy-with-web-technologies.html#comments</comments>
		<pubDate>Thu, 19 Apr 2012 16:34:16 +0000</pubDate>
		<dc:creator>Christian Cantrell</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/cantrell/?p=1195</guid>
		<description><![CDATA[I recently re-watched TRON: Legacy, and after the scene where Sam types a few Unix commands on a virtual keyboard, I decided I had to try one out for myself. In addition to wanting to see what it was like to use a virtual keyboard, I also wanted to see if I could build it [...]]]></description>
			<content:encoded><![CDATA[<div align="center"><img src="http://blogs.adobe.com/cantrell/files/2012/04/tron_keyboard_600.jpg" alt="" width="600" height="207" /></div>
<p>I recently re-watched <em>TRON: Legacy</em>, and after the scene where Sam types a few Unix commands on a virtual keyboard, I decided I had to try one out for myself. In addition to wanting to see what it was like to use a virtual keyboard, I also wanted to see if I could build it entirely with web technologies. I discovered I was able to do everything I wanted &#8212; except type particularly well.</p>
<p>Below is an explanation of the project (along with some conclusions on virtual keyboards in general). All the source code for the project is <a href="https://github.com/cantrell/VirtualKeyboard">available on GitHub</a>.</p>
<div align="center"><iframe src="http://www.youtube.com/embed/7oOKjY6AFSI" frameborder="0" width="640" height="360"></iframe></div>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/cantrell/archives/2012/04/building-the-keyboard-from-tron-legacy-with-web-technologies.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HTML Animation with requestAnimationFrame and Flash Professional CS6</title>
		<link>http://blogs.adobe.com/cantrell/archives/2012/03/html-animation-with-requestanimationframe-and-flash-professional-cs6.html</link>
		<comments>http://blogs.adobe.com/cantrell/archives/2012/03/html-animation-with-requestanimationframe-and-flash-professional-cs6.html#comments</comments>
		<pubDate>Thu, 29 Mar 2012 14:54:55 +0000</pubDate>
		<dc:creator>Christian Cantrell</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/cantrell/?p=1174</guid>
		<description><![CDATA[If you&#8217;re curious about the new requestAnimationFrame API, here&#8217;s a demo along with a code walk-through: The requestAnimationFrame API is a replacement for setTimeout and setInterval in the context of HTML animations. It has two primary advantages over timer functions: It is synchronized with the browser&#8217;s repaint loop which allows for more highly optimized animations. [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re curious about the new <code>requestAnimationFrame</code> API, here&#8217;s a demo along with a code walk-through:</p>
<div align="center"><iframe width="640" height="360" src="http://www.youtube.com/embed/1xTGZhWrYwA" frameborder="0" allowfullscreen></iframe></div>
<p><br/></p>
<p>The <code>requestAnimationFrame</code> API is a replacement for <code>setTimeout</code> and <code>setInterval</code> in the context of HTML animations. It has two primary advantages over timer functions:</p>
<ol>
<li>It is synchronized with the browser&#8217;s repaint loop which allows for more highly optimized animations.</li>
<li>Since it&#8217;s specifically designed and intended to be used for animation rather than being a general purpose timer, the browser knows that it&#8217;s safe to throttle it back when the tab isn&#8217;t active. Throttling back animations means freeing up CPU cycles, and reducing unnecessary battery drain on mobile devices.</li>
</ol>
<p>If you want to see this animation in action (and/or check out the code), <a href="http://christiancantrell.com/adobe/rocker/">it&#8217;s available here</a> (Hint: if it&#8217;s running slowly, try making your browser window smaller). Thanks to <a href="http://www.mudbubble.com/">Chris&nbsp;Georgenes</a> for the &#8220;rocker girl&#8221; animation. And finally, here are the resources I used to learn about <code>requestAnimationFrame</code>:</p>
<ul>
<li><a href="http://paulirish.com/2011/requestanimationframe-for-smart-animating/">requestAnimationFrame for smart animating</a></li>
<li><a href="https://developer.mozilla.org/en/DOM/window.requestAnimationFrame">Mozilla docs: window.requestAnimationFrame</a></li>
</ul>
<p><span id="more-1174"></span></p>
<div align="center"><iframe src="http://www.christiancantrell.com/adobe/rocker/index.html" width="360" height="360" frameborder="0"></iframe></div>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/cantrell/archives/2012/03/html-animation-with-requestanimationframe-and-flash-professional-cs6.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop Using &#8220;rm&#8221; on the Command Line (Before It&#8217;s Too Late)</title>
		<link>http://blogs.adobe.com/cantrell/archives/2012/03/stop-using-rm-on-the-command-line-before-its-too-late.html</link>
		<comments>http://blogs.adobe.com/cantrell/archives/2012/03/stop-using-rm-on-the-command-line-before-its-too-late.html#comments</comments>
		<pubDate>Tue, 27 Mar 2012 17:46:10 +0000</pubDate>
		<dc:creator>Christian Cantrell</dc:creator>
				<category><![CDATA[Cool Tools]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/cantrell/?p=1171</guid>
		<description><![CDATA[True story&#8230; While writing a Python script one day to do a little screen scraping and reporting, the topic of data loss came up between a friend and myself. I was bragging that&#160;I had never in my life accidentally lost a single file or piece of data that I wasn&#8217;t able to recover. Literally seconds [...]]]></description>
			<content:encoded><![CDATA[<p>True story&#8230;</p>
<p>While writing a Python script one day to do a little screen scraping and reporting, the topic of data loss came up between a friend and myself. I was bragging that&nbsp;I had never in my life accidentally lost a single file or piece of data that I wasn&#8217;t able to recover. Literally seconds later, while intending to rename my script using &#8220;mv&#8221;, I accidentally typed &#8220;rm&#8221; instead and deleted it.</p>
<p>That was just about the last time I used &#8220;rm&#8221;. I now use a script which, for no particular reason, I call &#8220;rr&#8221;. Rather than deleting files and/or directories, it moves them to the trash where they can be easily recovered if necessary. Here&#8217;s the script itself (configured to work on OS X):</p>
<pre>#!/bin/bash

if test $1
then
    mv $1 ~/.Trash/
fi</pre>
<p><br/></p>
<p>Just make the script executable (<code>chmod 755 rr</code>), drop it in your path, and forget &#8220;rm&#8221; ever existed.</p>
<p>As always, there are several other ways of doing this (remapping &#8220;rm&#8221;, making an alias, using the Finder, etc.), so pick the way that works best for you. The important thing is to keep yourself from losing hours of work on the command line like I did.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/cantrell/archives/2012/03/stop-using-rm-on-the-command-line-before-its-too-late.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Short Simple Video Explaining the Shadow DOM and Web Components</title>
		<link>http://blogs.adobe.com/cantrell/archives/2012/03/a-short-simple-video-explaining-the-shadow-dom-and-web-components.html</link>
		<comments>http://blogs.adobe.com/cantrell/archives/2012/03/a-short-simple-video-explaining-the-shadow-dom-and-web-components.html#comments</comments>
		<pubDate>Thu, 22 Mar 2012 14:56:23 +0000</pubDate>
		<dc:creator>Christian Cantrell</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/cantrell/?p=1165</guid>
		<description><![CDATA[I&#8217;ve been playing around with the shadow DOM and web components, so I thought I&#8217;d put together a quick video explaining the advantages: You can starting experimenting with these concepts today using Chrome Canary. Just make sure you enable the Shadow DOM and scoped style flags by typing &#8220;chrome://flags&#8221; into your location bar: If you [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing around with the shadow DOM and web components, so I thought I&#8217;d put together a quick video explaining the advantages:</p>
<div align="center">
<iframe width="640" height="360" src="http://www.youtube.com/embed/pQOuHNm5seY" frameborder="0" allowfullscreen></iframe>
</div>
<p><br/></p>
<p>You can starting experimenting with these concepts today using <a href="http://tools.google.com/dlpage/chromesxs">Chrome Canary</a>. Just make sure you enable the Shadow DOM and scoped style flags by typing &#8220;chrome://flags&#8221; into your location bar:</p>
<div align="center"><img src="http://blogs.adobe.com/cantrell/files/2012/03/chrome_flags_shadow_dom.png" width="353" height="168" style="-moz-box-shadow: 0 0 5px #888; -webkit-box-shadow: 0 0 5px #888; box-shadow: 0 0 5px #888;" /></div>
<p>If you want to learn more about the shadow DOM and web components, here are the resources I used:</p>
<ul>
<li><a href="http://glazkov.com/2011/01/14/what-the-heck-is-shadow-dom/">What the Heck is Shadow DOM?</a></li>
<li><a href="http://www.youtube.com/watch?v=3i4dtgh3ym0">Meet the Web Platform &#8211; Building on foundations (video)</a></li>
<li><a href="https://plus.google.com/103330502635338602217/posts">Web Components on Google+</a> (lots of links to resources and examples)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/cantrell/archives/2012/03/a-short-simple-video-explaining-the-shadow-dom-and-web-components.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accessing the Accelerometer and Gyroscope in JavaScript</title>
		<link>http://blogs.adobe.com/cantrell/archives/2012/03/accessing-the-accelerometer-and-gyroscope-in-javascript.html</link>
		<comments>http://blogs.adobe.com/cantrell/archives/2012/03/accessing-the-accelerometer-and-gyroscope-in-javascript.html#comments</comments>
		<pubDate>Tue, 20 Mar 2012 13:33:39 +0000</pubDate>
		<dc:creator>Christian Cantrell</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/cantrell/?p=1158</guid>
		<description><![CDATA[Now that you can access motion sensors in both Google Chrome and mobile browsers, I decided to demo a couple of sample application which hook into the accelerometer and gyroscope: If you want to see these applications in action and/or check out the code, the links are below: Parallax Compass Note that the compass application [...]]]></description>
			<content:encoded><![CDATA[<p>Now that you can access motion sensors in both Google Chrome and mobile browsers, I decided to demo a couple of sample application which hook into the accelerometer and gyroscope:</p>
<div align="center"><iframe src="http://www.youtube.com/embed/k-Rpp0TXIuU" frameborder="0" width="640" height="360"></iframe></div>
<p><br/></p>
<p>If you want to see these applications in action and/or check out the code, the links are below:</p>
<ul>
<li><a href="http://www.christiancantrell.com/adobe/parallax/">Parallax</a></li>
<li><a href="http://www.htmlcompass.com">Compass</a></li>
</ul>
<p>Note that the compass application only works on devices with gyroscopes (no laptops that I know if), and requires iOS 5 or newer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/cantrell/archives/2012/03/accessing-the-accelerometer-and-gyroscope-in-javascript.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mouse Pointer Lock in HTML: Video and Sample Code</title>
		<link>http://blogs.adobe.com/cantrell/archives/2012/03/mouse-pointer-lock-in-html-video-and-sample-code.html</link>
		<comments>http://blogs.adobe.com/cantrell/archives/2012/03/mouse-pointer-lock-in-html-video-and-sample-code.html#comments</comments>
		<pubDate>Thu, 15 Mar 2012 12:18:48 +0000</pubDate>
		<dc:creator>Christian Cantrell</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/cantrell/?p=1150</guid>
		<description><![CDATA[After watching Paul Irish&#8217;s talk at SXSW, I got curious about the new pointer lock APIs in Chrome and decided to create a sample application. Pointer lock refers to the ability to lock the mouse pointer in one location and hide it while still getting certain mouse events like mousemove. This is critical for immersive [...]]]></description>
			<content:encoded><![CDATA[<p>After watching <a href="http://www.youtube.com/watch?feature=player_detailpage&#038;v=zH5bJSG0DZk#t=6657s">Paul Irish&#8217;s talk at SXSW</a>, I got curious about the new pointer lock APIs in Chrome and decided to create a sample application. Pointer lock refers to the ability to lock the mouse pointer in one location and hide it while still getting certain mouse events like <code>mousemove</code>. This is critical for immersive experiences like games since the user wants to be able to use the mouse to navigate, but doesn&#8217;t want the pointer to move off the screen or get in the way.</p>
<p>It&#8217;s still early days for <code>navigator.webkitPointer</code>, but I was able to get something to work with <a href="http://tools.google.com/dlpage/chromesxs">Chrome Canary</a>. First, a video demo, then some explanation:</p>
<div align="center">
<iframe width="640" height="360" src="http://www.youtube.com/embed/onD-avVQXFk" frameborder="0" allowfullscreen></iframe>
</div>
<p><br/></p>
<p>If you want to try the demo firsthand (and maybe experiment with the pointer lock APIs yourself), you can <a href="http://christiancantrell.com/adobe/parallax/">find the code here</a>. But first, you need to follow these steps:</p>
<ol>
<li><a href="http://tools.google.com/dlpage/chromesxs">Download Chrome Canary</a>.</li>
<li>Enable pointer lock:
<ol>
<li>Type &quot;chrome://flags&quot; into your location bar.</li>
<li>Scroll down to &quot;<span jscontent="name" jstcache="7">Enable Pointer Lock</span> <span jscontent="supported_platforms.join(', ')" jstcache="8">Mac, Windows, Linux, Chrome OS</span>&quot;.</li>
<li>Click &quot;Enable&quot;.</li>
<li>Click the &quot;Relaunch Now&quot; button at the bottom to relaunch Chrome Canary.</li>
</ol>
</li>
<li>Allow sites to disable the mouse cursor:
<ol>
<li>Open settings.</li>
<li>Click &quot;Show advanced settings&#8230;&quot;.</li>
<li>Click &quot;Content settings&#8230;&quot;</li>
<li>Scroll down to the &quot;Mouse Cursor&quot; section.</li>
<li>Select &quot;Allow all sites to disable the mouse cursor&quot;. In theory, you should be able to select &quot;Ask me when a site tries to disable the mouse cursor (recommended),&quot; however this isn&#8217;t working for me right now (remember: still early days).</li>
</ol>
</li>
</ol>
<p>Currently, you can only lock the mouse pointer in Chrome while in fullscreen mode. Here&#8217;s the relevant code:</p>
<p><code>
<pre>document.addEventListener('webkitfullscreenchange', onFullscreenChange, false);

function onFullscreen(event) {
    document.body.webkitRequestFullScreen();
}

function onFullscreenChange(event) {
    if (document.webkitIsFullScreen) {
        id('fullscreenButton').style.display = 'none';
        if (navigator.webkitPointer) navigator.webkitPointer.lock(document.body);
    } else {
        if (navigator.webkitPointer) navigator.webkitPointer.unlock();
        id('fullscreenButton').style.display = 'block';
    }
}</pre>
<p></code></p>
<p>Remember that you have to handle mouse coordinates differently when the pointer is locked versus when the pointer is visible. When it&#8217;s locked, even though you can&#8217;t see the mouse cursor, it&#8217;s actually frozen in one location so it can&#8217;t be moved out of the window or onto another monitor which means properties on <code>MouseEvent</code> like <code>clientX</code> and <code>clientY</code> are useless. Instead, you can use properties like <code>webkitMovementX</code> and <code>webkitMovementY</code> that tell you how much (and in which direction) the mouse is being moved as opposed to the location of the mouse cursor. Below is the relevant code from the sample application:</p>
<p><code>
<pre>var lastMouse;

function onMouseMove(event) {
    var xDelta, yDelta;
    if (navigator.webkitPointer &amp;&amp; navigator.webkitPointer.isLocked) {
        xDelta = event.webkitMovementX;
        yDelta = event.webkitMovementY;
    } else {
        if (lastMouse == null) lastMouse = {x:event.clientX, y:event.clientY};
        xDelta = event.clientX - lastMouse.x;
        yDelta = event.clientY - lastMouse.y;
    }
}</pre>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/cantrell/archives/2012/03/mouse-pointer-lock-in-html-video-and-sample-code.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Next Step in Mobile HTML Workflows</title>
		<link>http://blogs.adobe.com/cantrell/archives/2012/03/the-next-step-in-mobile-html-workflows.html</link>
		<comments>http://blogs.adobe.com/cantrell/archives/2012/03/the-next-step-in-mobile-html-workflows.html#comments</comments>
		<pubDate>Wed, 07 Mar 2012 19:53:32 +0000</pubDate>
		<dc:creator>Christian Cantrell</dc:creator>
				<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/cantrell/?p=1145</guid>
		<description><![CDATA[If you do a lot of mobile web development, you might want to check out Adobe Shadow. Shadow is a way to easily push web content from your desktop to any number of mobile devices while you&#8217;re developing or testing so you don&#8217;t have to type in&#160;cumbersome&#160;URLs and keep refreshing. Additionally, Shadow allows you to [...]]]></description>
			<content:encoded><![CDATA[<p>If you do a lot of mobile web development, you might want to check out <a href="http://labs.adobe.com/technologies/shadow/">Adobe Shadow</a>. Shadow is a way to easily push web content from your desktop to any number of mobile devices while you&#8217;re developing or testing so you don&#8217;t have to type in&nbsp;cumbersome&nbsp;URLs and keep refreshing. Additionally, Shadow allows you to debug and inspect web content running in your iOS or Android browser.</p>
<p>Adobe Shadow is <a href="http://labs.adobe.com/technologies/shadow/">now available on Labs</a>. If you want to see it in action, check out the &#8220;sneak peek&#8221; below:</p>
<div align="center"><iframe title="AdobeTV Video Player" src="http://tv.adobe.com/embed/877/12009/" frameborder="0" scrolling="no" width="640" height="367"></iframe></div>
<p><br/></p>
<p>Also, you can check out an early prototype I built around these concepts after doing enough mobile web development that the workflow was really starting to bug me. In my opinion, the Shadow team really nailed it.</p>
<div align="center"><iframe src="http://www.youtube.com/embed/sfrWEgFRWEE" frameborder="0" width="640" height="360"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/cantrell/archives/2012/03/the-next-step-in-mobile-html-workflows.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Prototyping in HTML</title>
		<link>http://blogs.adobe.com/cantrell/archives/2012/02/prototyping-in-html.html</link>
		<comments>http://blogs.adobe.com/cantrell/archives/2012/02/prototyping-in-html.html#comments</comments>
		<pubDate>Mon, 20 Feb 2012 14:19:05 +0000</pubDate>
		<dc:creator>Christian Cantrell</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/cantrell/?p=1140</guid>
		<description><![CDATA[Over the weekend, I built an e-book reader prototype to demonstrate some ideas that might make the digital book reading experience better. Although I was prototyping a native application, I found the easiest way to build it was with HTML, JavaScript, and CSS. Once CSS regions make it into all mobile browsers, I might put [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<iframe width="640" height="360" src="http://www.youtube.com/embed/HkrD3DxMKCM" frameborder="0" allowfullscreen></iframe>
</div>
<p><br/></p>
<p>Over the weekend, I built an e-book reader prototype to demonstrate some ideas that might make the digital book reading experience better. Although I was prototyping a native application, I found the easiest way to build it was with HTML, JavaScript, and CSS. Once <a href="http://blogs.adobe.com/cantrell/archives/2012/02/css-regions-whats-possible-now-and-whats-coming.html">CSS regions</a> make it into all mobile browsers, I might put some more time into this concept and build a real browser-based e-book reader (that works exactly how I want it to).</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/cantrell/archives/2012/02/prototyping-in-html.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

