<?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>Eric Feminella &#187; Mobile</title>
	<atom:link href="http://www.ericfeminella.com/blog/category/mobile/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ericfeminella.com/blog</link>
	<description>Thoughts on Software Design and Development</description>
	<lastBuildDate>Wed, 25 Jan 2012 04:12:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>AT&amp;T Best Practices Guide for App Development</title>
		<link>http://www.ericfeminella.com/blog/2012/01/15/att-best-practices-guide-for-app-development/</link>
		<comments>http://www.ericfeminella.com/blog/2012/01/15/att-best-practices-guide-for-app-development/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 11:00:20 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Tablets]]></category>
		<category><![CDATA[User Experience Design]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=3419</guid>
		<description><![CDATA[When considering the various best practices surrounding the design of Mobile Web Experiences and Architectures, such works as the W3C&#8217;s Mobile Web Application Best Practices guide, or the excellent Mobile Web Best Practices site, and of course, the seminal text, Mobile First, are likely to come to mind. The concepts and strategies presented in these [...]]]></description>
			<content:encoded><![CDATA[<p>When considering the various best practices surrounding the design of Mobile Web Experiences and Architectures, such works as the W3C&#8217;s <a href="http://www.w3.org/TR/mwabp/" target="_blank">Mobile Web Application Best Practices</a> guide, or the excellent <a href="http://mobilewebbestpractices.com/" target="_blank">Mobile Web Best Practices</a> site, and of course, the seminal text, <a href="http://www.abookapart.com/products/mobile-first" target="_blank">Mobile First</a>, are likely to come to mind. The concepts and strategies presented in these works are a staple in the design of many modern Mobile Web Experiences and are without question an invaluable resource. In addition to these and other similarly related works, another new and valuable resource has been made available from a very important player in the Mobile Space indeed &#8211; an actual Wireless Carrier, AT&#038;T.</p>
<p>Recently, I was contacted by a representative of the AT&#038;T Developer Program informing me of the research conducted by the <a href="http://www.research.att.com/editions/201201_home.html?fbid=Mu13IZ0xu2h" target="_blank">AT&#038;T Research Labs</a> and, the subsequent resources made available by AT&#038;T as a result of their findings. Since I was unaware of this work, I was very interesting in learning more and, after reading the introductory statements, I was quite eager to apply AT&#038;T&#8217;s recommendations as well; to quote specifically:<br />
<blockquote>We quickly saw that a few, simple design approaches could significantly improve application responsiveness.</p></blockquote>
<p>Having read through the material in it&#8217;s entirety (provided <a href="#resources" target="_self">below</a>) I must say I am rather impressed. The information provided has very real and practical implications on the design of Mobile Web Applications. Specifically, I found the clear and concise explanation of the underlying implementation of the <a href="http://en.m.wikipedia.org/wiki/Radio_Resource_Control">Radio Resource Control (RRC) protocol</a> to be particularly relevant and useful. RRC is by far one of the most important design factors to consider in terms of battery life and Application responsiveness and, as the research suggests, this may not have been common knowledge. </p>
<p>By far, the most interesting and notable aspect of the AT&#038;T Research Lab&#8217;s work in this area is the fact that all of the information provided is applicable in the context of all Wireless Carriers, not just AT&#038;T. That is, the recommendations given, such as those regarding the RRC State Machine, for example, are all based on carrier-independent standards and protocols implemented by all Wireless Carriers. As such, understanding the implementation specifics and recommendations provided is certain to prove valuable for all users of your Application, regardless of their Carrier.</p>
<p>If you haven&#8217;t all ready, I highly recommend reading and applying the principles provided by AT&#038;T&#8217;s research to your current and future Mobile Web Application Designs.</p>
<h2 id="resources">AT&#038;T Research Labs: Mobile Application Resources</h2>
<p><a href="https://developer.att.com/developer/forward.jsp?passedItemId=7200042" target="_blank">Build Efficient Apps</a><br />
<a href="http://www.research.att.com/export/sites/att_labs/techdocs/TD_100229.pdf" target="_blank">Profiling Resource Usage for Mobile Applications: A Cross-layer Approach</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2012/01/15/att-best-practices-guide-for-app-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuring iOS HTTP Monitoring</title>
		<link>http://www.ericfeminella.com/blog/2011/12/16/monitoring-http-traffic-on-ios/</link>
		<comments>http://www.ericfeminella.com/blog/2011/12/16/monitoring-http-traffic-on-ios/#comments</comments>
		<pubDate>Sat, 17 Dec 2011 02:04:29 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[Tablets]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[mobile web]]></category>
		<category><![CDATA[proxies]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=3378</guid>
		<description><![CDATA[When developing Web Applications for the Mobile Web Experience it is often useful to have a clear view into all HTTP requests and responses sent between the client and server. This is quite simple to accomplish when developing Web Applications for the Desktop as, the browser is running locally so any standard HTTP Monitor will [...]]]></description>
			<content:encoded><![CDATA[<p>When developing Web Applications for the Mobile Web Experience it is often useful to have a clear view into all HTTP requests and responses sent between the client and server. This is quite simple to accomplish when developing Web Applications for the Desktop as, the browser is running locally so any standard HTTP Monitor will suffice. And, while it is a normal part of a typical development workflow to run an application locally the majority of the time, testing on each target device is obviously an essential part of the process as well.</p>
<p>Luckily, with <a href="http://www.charlesproxy.com/" target="_blank">Charles</a>, on iOS this is quite simple to accomplish.</p>
<h2>Configuration</h2>
<p>To configure Charles to proxy all requests from an iOS device, simply follow these basic steps:</p>
<ol>
<li>From your iOS Device, open Settings.</li>
<li>Go to Wi-Fi, select your Network and select the Blue &#8220;arrow&#8221; icon.</li>
<li>Scroll to HTTP Proxy and select the Manual Button.</li>
<li>In the Server field, enter the IP address of your development machine.</li>
<li>In the port field, enter port 8888 (the default port to which Charles binds).</li>
<li>Leave Authentication set to Off.</li>
</ol>
<p>And that&#8217;s all there is to it. Now, open Mobile Safari and go to your Web Application&#8217;s URL (or any page on the web for that matter). On your development machine, in Charles you will receive a prompt with the IP Address of your Mobile Device, click &#8220;Allow&#8221; and you are all set. When you are done working, make sure to turn off HTTP Proxy on your device.</p>
<h3>Additional Note</h3>
<p>While this article may be focused on Mobile Web Applications, these same configurations apply to all HTTP traffic from any application on your device that requires resources over the web. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2011/12/16/monitoring-http-traffic-on-ios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DHTMLX Touch 1.0 Released</title>
		<link>http://www.ericfeminella.com/blog/2011/11/23/dhtmlx-touch-1-0-released/</link>
		<comments>http://www.ericfeminella.com/blog/2011/11/23/dhtmlx-touch-1-0-released/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 13:31:56 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Web]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=3284</guid>
		<description><![CDATA[Last week, shortly after I blogged about the release of jQuery Mobile 1.0, I received an email informing me of the release of another Mobile Web Framework: DHTMLX Touch 1.0. Being that I was unfamiliar with DHTMLX Touch (as I have been using jQuery Mobile almost exclusively), I was quite interested to learn more; and, [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, shortly after I blogged about the release of <a href="http://www.ericfeminella.com/blog/2011/11/17/jquery-mobile-1-0-released/" target="_blank">jQuery Mobile 1.0</a>, I received an email informing me of the release of another Mobile Web Framework: <a href="http://www.dhtmlx.com/touch/" target="_blank">DHTMLX Touch 1.0</a>. </p>
<p>Being that I was unfamiliar with <em>DHTMLX Touch</em> (as I have been using <a href="http://jquerymobile.com/" target="_blank">jQuery Mobile</a> almost exclusively), I was quite interested to learn more; and, having tried the <a href="http://www.dhtmlx.com/touch/samples/" target="_blank">Examples</a> and reviewed the <a href="http://docs.dhtmlx.com/touch/" target="_blank">Documentation</a>, I was rather impressed by DHTMLX Touch. </p>
<p>And so, if you haven&#8217;t already, <a href="http://www.dhtmlx.com/blog/?p=1425" target="_blank">check it out</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2011/11/23/dhtmlx-touch-1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3 Attribute Selectors</title>
		<link>http://www.ericfeminella.com/blog/2011/11/10/css3-attribute-selectors/</link>
		<comments>http://www.ericfeminella.com/blog/2011/11/10/css3-attribute-selectors/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 15:59:33 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[CSS3 Attribute Selectors]]></category>
		<category><![CDATA[CSS3 Selectors]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[html5 elements]]></category>
		<category><![CDATA[html5 semantics]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=2937</guid>
		<description><![CDATA[The power of CSS Selectors can not be understated; for, without them, there would be no simple means by which developers could target specific elements for styling in a manner abstracted from, or external to, the actual markup to which the styles will bind. In addition to some of the more common Simple Selectors, such [...]]]></description>
			<content:encoded><![CDATA[<p>The power of <a href="http://www.w3.org/TR/selectors/" title="CSS3 Selectors Module" target="_blank">CSS Selectors</a> can not be understated; for, without them, there would be no simple means by which developers could target specific elements for styling in a manner abstracted from, or external to, the actual markup to which the styles will bind.</p>
<p>In addition to some of the more common <a href="http://www.w3.org/TR/selectors/#simple-selectors" title="CSS3 Simple Selectors" target="_blank">Simple Selectors</a>, such as <a href="http://www.w3.org/TR/selectors/#type-selectors" title="CSS3 Type Selectors" target="_blank">Type Selectors</a>, <a href="http://www.w3.org/TR/selectors/#class-html" title="CSS3 Class Selectors" target="_blank">Class Selectors</a> and <a href="http://www.w3.org/TR/selectors/#id-selectors" title="CSS3 Id Selectors" target="_blank">Id Selectors</a>, we have have <a href="http://www.w3.org/TR/selectors/#attribute-selectors" title="CSS3 Attribute Selectors" target="_blank">Attribute Selectors</a>, which, as the name implies, allow us to match elements based on their <a href="http://dev.w3.org/html5/spec/Overview.html#attributes" title="HTML5 Element Attributes" target="_blank">attributes</a>.</p>
<section id="attribute-presence-value-selectors">
<h2>Attribute Presence and Value Selectors</h2>
<p>CSS2 introduced four Attribute Selectors; referred to as <em>Attribute Presence and Value Selectors</em>, which allow for course grained matching of specific elements based on their attributes and / or attribute values. These include the following:</p>
<div class="post-datalist">
<dl>
<dt>e[attr]</dt>
<dd>Where <em>e</em> is an element and <code>[attr]</code> is an attribute of element <em>e</em>. For example, <code>p[title]</code> would match all <code>p</code> tags with a <code>title</code>, regardless of the value of the <code>title</code>.</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="coMULTI">/* Matches all &lt;p&gt; tags with a title and changes their background color to red with white text */</span><br />
p<span class="br0">&#91;</span>title<span class="br0">&#93;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; background-color: red;<br />
&nbsp; &nbsp; color: white;<br />
<span class="br0">&#125;</span></div>
</dd>
<dt>e[attr=val]</dt>
<dd>Where <em>e</em> is an element and <code>[attr=val]</code> represent an attribute of element <em>e</em> which contains the exact value of <code>val</code>. For example, <code>p[title="Example 1"]</code> would match all <code>p</code> tags with a <code>title</code> which equals &#8220;Example 1&#8243; exactly.</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="coMULTI">/* Matches all &lt;p&gt; tags with a title equal to &quot;Example 1&quot; and changes their background color to green and text color to white */</span><br />
p<span class="br0">&#91;</span>title=<span class="st0">&quot;Example 1&quot;</span><span class="br0">&#93;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; background-color: green;<br />
&nbsp; &nbsp; color: white;<br />
<span class="br0">&#125;</span></div>
</dd>
<dt>e[attr~=val]</dt>
<dd>Where <em>e</em> is an element and <code>[attr~=val]</code> is an attribute of element <em>e</em> which has a value containing a whitespace-separated list of words, one of which equals <code>val</code> exactly. For example, <code>p[title~="Example-1a"]</code> would match all <code>p</code> tags with a <code>title</code> containing the word &#8220;Example-1a&#8221; in a list of whitespace delimited words.</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="coMULTI">/* Matches all &lt;p&gt; tags with a title containing the exact word to &quot;Example-1a&quot; and changes their background color to black and text color to red */</span><br />
p<span class="br0">&#91;</span>title~=<span class="st0">&quot;Example-1a&quot;</span><span class="br0">&#93;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; background-color: black;<br />
&nbsp; &nbsp; color: red;<br />
<span class="br0">&#125;</span></div>
</dd>
<dt>e[attr|=val]</dt>
<dd>Where <em>e</em> is an element and <code>[attr|=val]</code> is an attribute of element <em>e</em> that has a value of <code>val</code> exactly, or begins with <code>val</code> immediately followed by a hyphen &#8220;-&#8221;. For example, <code>p[title!="Example"]</code> would match all <code>p</code> tags with a <code>title</code> containing the word &#8220;Example-&#8221;, followed by any other value, such as &#8220;Example-1&#8243;, &#8220;Example-A&#8221;, etc..</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="coMULTI">/* Matches all &lt;p&gt; tags with a title containing the word to &quot;Example-&quot; and changes their background color to blue and text color to white */</span><br />
p<span class="br0">&#91;</span>title|=<span class="st0">&quot;Example&quot;</span><span class="br0">&#93;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; background-color: blue;<br />
&nbsp; &nbsp; color: white;<br />
<span class="br0">&#125;</span></div>
</dd>
</dl>
<p><a href="http://code.ericfeminella.com/articles/examples/css3/selectors/attribute-presence.html" target="_blank" title="Attribute Presence and Value Selectors Example">View Example</a>
</div>
</section>
<section id="attribute-substring-matching-selectors">
<h2>Substring Matching Attribute Selectors</h2>
<p>In addition to the above <em>Attribute Presence and Value Selectors</em>, CSS3 expands on this by defining three additional <a href="http://www.w3.org/TR/selectors/#attribute-substrings" target="_blank">Attribute Selectors</a>; referred to as <em>Substring Matching Attribute Selectors</em>. These additions allow for fine grained matching of specific elements based on their attribute values. </p>
<p>In simplest terms, the new Attribute Selectors in CSS3 can be used to match an element with a given attribute whose value begins, ends or contains a certain value. The following is a basic description and example of each new Attribute Selector:</p>
<div class="post-datalist">
<dl>
<dt>e[attr^=val]</dt>
<dd>Where <em>e</em> is an element and <code>[attr^=val]</code> is an attribute of element <em>e</em> which contains a value that begins with <em>val</em>. </p>
<div class="dean_ch" style="white-space: wrap;">
<span class="coMULTI">/* Matches all linked resources sent over https */</span><br />
a<span class="br0">&#91;</span>href^=<span class="st0">&quot;https&quot;</span><span class="br0">&#93;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; color: red;<br />
<span class="br0">&#125;</span></div>
</dd>
<dt>e[attr$=val]</dt>
<dd>Where <em>e</em> is an element and <code>[attr$=val]</code> represent an attribute of element <em>e</em> which contains a value that ends with <code>val</code>.</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="coMULTI">/* Matches all anchor tags to .html documents */</span><br />
a<span class="br0">&#91;</span>href$=<span class="st0">&quot;.html&quot;</span><span class="br0">&#93;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; color: green;<br />
<span class="br0">&#125;</span></div>
</dd>
<dt>e[attr*=val]</dt>
<dd>Where <em>e</em> is an element and <code>[attr*=val]</code> is an attribute of element <em>e</em> which has a value that contains <code>val</code>.</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="coMULTI">/* Matches all anchor tags which contain a query string */</span><br />
a<span class="br0">&#91;</span>href*=<span class="st0">&quot;?&quot;</span><span class="br0">&#93;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; color: blue;<br />
<span class="br0">&#125;</span></div>
</dd>
</dl>
<p><a href="http://code.ericfeminella.com/articles/examples/css3/selectors/substring-matching.html" target="_blank" title="Substring Matching Attribute Selectors Example">View Example</a>
</div>
</section>
<p>To summarize, there are a total of seven Attribute Selectors in CSS3, three of which are new. Whether used for general matches, such as global Attributes; e.g. <code>*[hreflang|=en]</code> or more specific matches, such as chaining; e.g, <code>a[href^="https"][target="_blank"]</code>, Attribute Selectors provide a powerful mechanism for selecting both general and specific content within a page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2011/11/10/css3-attribute-selectors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test Driven Javascript with QUnit</title>
		<link>http://www.ericfeminella.com/blog/2011/09/19/test-driven-javascript-with-qunit/</link>
		<comments>http://www.ericfeminella.com/blog/2011/09/19/test-driven-javascript-with-qunit/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 13:04:08 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery Mobile]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Tablets]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[User Experience Design]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[qUnit]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=2055</guid>
		<description><![CDATA[For the past year I have been using jQuery Mobile for developing web based mobile applications leveraging HTML5, CSS3 and JavaScript. Like all UI implementations, meaningful test coverage is essential to ensuring requirements have been met and refactoring can be achieved with confidence. Building applications for the Mobile Web is no different in this respect. [...]]]></description>
			<content:encoded><![CDATA[<p>For the past year I have been using <a href="http://jquerymobile.com/" target="_blank">jQuery Mobile</a> for developing web based mobile applications leveraging <a href="http://html5.org/" target="_blank">HTML5</a>, <a href="http://www.css3.info/" target="_blank">CSS3</a> and <a href="http://en.wikipedia.org/wiki/JavaScript" target="_blank">JavaScript</a>. Like all UI implementations, meaningful test coverage is essential to ensuring requirements have been met and refactoring can be achieved with confidence. Building applications for the Mobile Web is no different in this respect. And so, a high quality <a href="http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks" target="_blank">Unit Testing framework</a> is as essential to the success of Mobile Web Applications as it is to their Desktop counterparts. </p>
<h2 class="post-section-heading">Why QUnit?</h2>
<p>While there are quite a few good <a href="http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#JavaScript" target="_blank">JavaScript Unit Testing Frameworks</a> available, <a href="https://github.com/pivotal/jasmine/wiki" target="_blank">Jasmine</a> in particular, I have found <a href="http://docs.jquery.com/Qunit" target="_blank">QUnit</a> to best suit my particular needs for implementing <a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">Test Driven Development</a> in JavaScript based on it&#8217;s clean design and practical implementation.</p>
<h3 class="post-section-heading">A Simple, Powerful API</h3>
<p>The power of QUnit lies in it&#8217;s simple and a rather unique approach to Test Driven Development in JavaScript. The <a href="http://docs.jquery.com/Qunit#API_documentation" target="_blank">QUnit API</a> introduces a few slightly different test implementation concepts when compared to the more traditional <a href="http://en.wikipedia.org/wiki/XUnit" target="_blank">xUnit</a> style of TDD. In doing so, QUnit succeeds in simplifying some of the tedium of writing tests by leveraging the language features of JavaScript as opposed to strictly adhering to the more traditional xUnit conventions, the design of which is based on an fundamentally different language idiom &#8211; that is, Java.</p>
<p>For example, consider the follow which tests for a custom data namespace attribute in jQuery Mobile:</p>
<div class="dean_ch" style="white-space: wrap;">
test<span class="br0">&#40;</span><span class="st0">&quot;Test expected namespace override&quot;</span>, <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw2">var</span> expected = <span class="st0">&quot;someNamespace-&quot;</span>;<br />
&nbsp; &nbsp; <span class="kw2">var</span> actual &nbsp; = $.<span class="me1">mobile</span>.<span class="me1">ns</span>;<br />
&nbsp; &nbsp; equal<span class="br0">&#40;</span>actual, expected, <span class="st0">&quot;expecting namespace to have been set.&quot;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
<p><span class="figure">Figure 1 (<a href="http://code.ericfeminella.com/articles/examples/qunit/basic/" target="_blank">run</a>) (<a href="view-source:http://code.ericfeminella.com/articles/examples/qunit/basic/" target="_blank">source</a>)</span><br/></p>
<p>The above test may appear quite straightforward, yet it serves as a good example by illustrating how each test in QUnit is implemented by the QUnit <a href="http://docs.jquery.com/Qunit/test#nameexpectedtest" target="_blank">test fixture</a>. The first argument is simply a String which describes the test case. This is quite convenient in that the intent of a particular test case can be expressed more naturally in textual form as opposed to using a long, descriptive test method name. The Second argument contains the actual test implementation itself, which is defined as an anonymous function and passed as an argument to <code>QUnit.test</code>.</p>
<p>As you may have also noticed from the above example, there are some, perhaps subtle, differences between the QUnit style of testing and the traditional xUnit style. Specifically, whereas in <a href="http://xunitpatterns.com/Assertion%20Method.html#Equality Assertion" target="_blank">xUnit assertions</a> expected values are specified first and preceded by actuals, in QUnit actuals are specified first followed by expected values. This may feel a bit odd at first however, after a few tests it&#8217;s easy to get used to. Additionally, where an assertion message is specified before any arguments in xUnit, in QUnit assertion messages are specified after all arguments. With regard to test descriptions, this is a difference I prefer as, a test message is always optional so passing this value last make sense. While somewhat subtle differences, these are worth noting.</p>
<h2 class="post-section-heading">A Complete Example</h2>
<p>As code can typically convey much more information than any lengthy article could ever hope to achieve, I have provided a simple, yet complete, example which demonstrates a basic qUnit test implementation. <span class="figure">(<a href="http://code.ericfeminella.com/articles/examples/qunit/example/" target="_blank">run</a>) (<a href="http://code.ericfeminella.com/articles/examples/qunit/example.zip" target="_blank">source</a>)</span>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2011/09/19/test-driven-javascript-with-qunit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The convergence of Mobile and Desktop UI Design</title>
		<link>http://www.ericfeminella.com/blog/2011/07/04/the-convergence-of-mobile-and-desktop-ui-design/</link>
		<comments>http://www.ericfeminella.com/blog/2011/07/04/the-convergence-of-mobile-and-desktop-ui-design/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 16:25:22 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Tablets]]></category>
		<category><![CDATA[User Experience Design]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=2470</guid>
		<description><![CDATA[Successful User Experience and User Interface Designs are inherently intuitive and simple. Not necessarily simple in the &#8220;less is more&#8221; aspect alone but rather in that the designs focus on essential tasks &#8211; and provide an experience which allows for completing those tasks easily and efficiently. With this in mind it is not surprising that [...]]]></description>
			<content:encoded><![CDATA[<p>Successful User Experience and User Interface Designs are inherently intuitive and simple. Not necessarily simple in the &#8220;less is more&#8221; aspect alone but rather in that the designs focus on essential tasks &#8211; and provide an experience which allows for completing those tasks easily and efficiently.</p>
<p>With this in mind it is not surprising that many modern Desktop UI Designs are being influenced by Smartphone UIs; for they, by necessity of constraint, address many design challenges which can be easily overlooked in Desktop UI Designs.</p>
<p>Both Apple and Microsoft have borrowed from their respective Mobile designs in their latest Desktop OS offerings; <a href="http://www.apple.com/macosx/" target="_blank">Lion</a> and <a href="http://www.microsoft.com/presspass/features/2011/jun11/06-01corporatenews.aspx" target="_blank">Windows 8</a>.</p>
<p>Ultimately, I believe this convergence of the Mobile and Desktop paradigms will lead to better Use Experiences. In fact, I have been leveraging many mobile concepts in Desktop UIs for some time now to much success.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2011/07/04/the-convergence-of-mobile-and-desktop-ui-design/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Step Backwards In Usability?</title>
		<link>http://www.ericfeminella.com/blog/2011/05/30/a-step-backwards-in-usability/</link>
		<comments>http://www.ericfeminella.com/blog/2011/05/30/a-step-backwards-in-usability/#comments</comments>
		<pubDate>Mon, 30 May 2011 16:01:51 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[jQuery Mobile]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tablets]]></category>
		<category><![CDATA[User Experience Design]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[HCI]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[Multiscreen]]></category>
		<category><![CDATA[touchscreen]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=2385</guid>
		<description><![CDATA[I recently read a preview of a column which is to be published in the next addition of ACM CHI magazine, Interactions. This particular article is a rather interesting read in that it touches upon what the authors argue are the many short-comings in current Gestural Interfaces; stating that they pose a huge step backwards [...]]]></description>
			<content:encoded><![CDATA[<p>I recently read a preview of a column which is to be published in the next addition of ACM CHI magazine, <a href="http://interactions.acm.org/" target="_blank">Interactions</a>. This particular article is a rather interesting read in that it touches upon what the authors argue are the many short-comings in current Gestural Interfaces; stating that they pose a huge step backwards in terms of Usability.</p>
<p>This may not have raised many eyebrows if it were not for the expertise of the articles authors, <a href="http://www.jnd.org/" target="_blank">Donald A. Norman</a> and <a href="http://www.useit.com/jakob/" target="_blank">Jakob Nielsen</a>; both of whom know quite a bit about <a href="ttp://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction" target="_blank">HCI</a>.</p>
<p>Experimentation in new technology and the process of learning what works and what does not can be challenging. This article raises some important, yet mostly overlooked, concerns surrounding new technologies which are built upon Gestural Interfaces; i.e. current touch screen devices such as iOS and Android. Certainly a good read for anyone interested in Touch Screen development. <a href="http://www.jnd.org/dn.mss/gestural_interfaces_a_step_backwards_in_usability_6.html" target="_blank">Gestural Interfaces: A Step Backwards In Usability</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2011/05/30/a-step-backwards-in-usability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Put your Best People on Mobile</title>
		<link>http://www.ericfeminella.com/blog/2011/04/28/put-your-best-people-on-mobile/</link>
		<comments>http://www.ericfeminella.com/blog/2011/04/28/put-your-best-people-on-mobile/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 01:49:09 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tablets]]></category>
		<category><![CDATA[User Experience Design]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=2354</guid>
		<description><![CDATA[So first the biggest number &#8211; 5.2. That is in billions with a B. There are 1.2 billion personal computers in use worldwide including desktops, laptops and tablet PCs like the iPad. There are 1.1 billion fixed landline phones. There are 1.0 billion automobiles registered and in use. There are 1.6 billion television sets, 1.7 [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>So first the biggest number &#8211; 5.2. That is in billions with a B. There are 1.2 billion personal computers in use worldwide including desktops, laptops and tablet PCs like the iPad. There are 1.1 billion fixed landline phones. There are 1.0 billion automobiles registered and in use. There are 1.6 billion television sets, 1.7 billion credit card users, 2.0 billion internet users, 2.2 billion people with a banking account, and 3.9 billion radio receivers in use worldwide. Mobile utterly dwarfs them all &#8211; with 5.2 billion currently active, ie fully paid mobile phone subscriptions. Active mobile phone accounts. 5.2 billion. yes, 4.5 times more mobile phone subscriptions than personal computers or landline phones. 2.5x more mobile accounts than all internet users. 3 times more mobile subscribers than the total number of television sets. Mobile is huge. &#8211; Tomi Ahonen</p></blockquote>
<p>These numbers are simply staggering.</p>
<p>For sometime now Myself and pretty much everyone else for that matter have been speaking quite a bit about the significance of Mobile. And while it may seem quite obvious that Mobile is huge, understanding the sheer magnitude of Mobile is truly put into perspective when some real world comparisons are made.</p>
<p>To get an idea of just how big mobile is, consider the recent article published by <a href="http://communities-dominate.blogs.com/about.html" target="_blank">Tomi Ahonen</a>, (which I found thru <a href="http://twitter.com/#!/brianmoconnor" target="_blank">Brian O&#8217;Connor</a>) in which some rather astounding numbers are provided in his aptly titled post: <a href="http://communities-dominate.blogs.com/brands/2011/02/all-the-numbers-all-the-facts-on-mobile-the-trillion-dollar-industry-why-is-google-saying-put-your-b.html" target="_blank">All the Numbers, All the Facts on Mobile the Trillion-Dollar Industry. Why is Google saying: Put your Best People on Mobile?</a>. Certainly a must read for anyone interested in Mobile Development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2011/04/28/put-your-best-people-on-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ergonomics of Mobile Touchscreen Design</title>
		<link>http://www.ericfeminella.com/blog/2011/03/09/ergonomics-of-mobile-touchscreen-design/</link>
		<comments>http://www.ericfeminella.com/blog/2011/03/09/ergonomics-of-mobile-touchscreen-design/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 04:08:25 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Tablets]]></category>
		<category><![CDATA[User Experience Design]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=2006</guid>
		<description><![CDATA[Dan Saffer has published an interesting article illustrating the Activity Zones for Touchscreen Tablets and Phones which appear to provide the most natural level of usability. The article is particularly interesting in that it touches on (pun intended) the human factors involved in how we physically interact with devices. The Activity Zones outlined in the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.odannyboy.com/" target="_blank">Dan Saffer</a> has published an interesting article illustrating the <a href="http://www.kickerstudio.com/blog/2011/01/activity-zones-for-touchscreen-tablets-and-phones/"  target="_blank">Activity Zones for Touchscreen Tablets and Phones</a> which appear to provide the most natural level of usability.</p>
<p>The article is particularly interesting in that it touches on (pun intended) the human factors involved in how we physically interact with devices. The Activity Zones outlined in the article equate to the areas which provide the greatest level of physical comfort when interacting with a touchscreen device. </p>
<p>The general physicality of natural, symbolic and sequential gestures associated with designing touchscreen experiences as well as the environmental distractions and engagement models of mobile experiences is a topic which I find quite interesting. This is a significant leap forward from the traditional <a href="http://en.wikipedia.org/wiki/WIMP_(computing)"  target="_blank">WIMP</a> interaction model. All of these considerations allow for a more Human centered design focus, just as it should be; after all, this is the purpose of UI Engineering.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2011/03/09/ergonomics-of-mobile-touchscreen-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multiscreen Software Design</title>
		<link>http://www.ericfeminella.com/blog/2011/03/06/multiscreen-software-design/</link>
		<comments>http://www.ericfeminella.com/blog/2011/03/06/multiscreen-software-design/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 16:21:10 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[APIs]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Object Oriented Design]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Tablets]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[User Experience Design]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=1852</guid>
		<description><![CDATA[&#8220;We are in the midst of a revolution across a variety of screens&#8221; You may recall first hearing the notion of a &#8220;Multiscreen Revolution&#8221; during the keynote at Max 2010. If you take a moment and think about it that&#8217;s a rather profound statement, and by all apparent indications a very true one. This is [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;We are in the midst of a revolution across a variety of screens&#8221;</p></blockquote>
<p>You may recall first hearing the notion of a &#8220;Multiscreen Revolution&#8221; during the keynote at Max 2010. If you take a moment and think about it that&#8217;s a rather profound statement, and by all apparent indications a very true one.</p>
<p>This is also how <a href="http://www.adobe.com/aboutadobe/pressroom/executivebios/kevinlynch.html" target="_blank">Kevin Lynch</a>, CTO at Adobe, begins his recent article, aptly titled  &#8220;<a href="http://blogs.adobe.com/conversations/2011/02/the-multiscreen-revolution.html" target="_blank">The Multiscreen Revolution</a>&#8221; in which Kevin provides a succinct breakdown covering the driving forces behind this revolution and how it is guiding the future of the Flash Platform. </p>
<p>Allow me to digress for a moment as, in a way, for me at least, the &#8220;Multiscreen Revolution&#8221; tends to conjure up the hypothetical notion of a <a href="http://www.sciencedaily.com/releases/2010/01/100112165249.htm" target="_blank">Multiverse</a>. This may be a suitable analogy I suppose as  we have been focused in a predominantly Personal Computer based reality for many years, and while this remains relevant, it is no longer exclusive. </p>
<p>I have been giving a lot of thought lately regarding designing software in a multi form factor paradigm and felt I would share some initial thoughts on the subject. Keep in mind much of this is still quite new and subject to change; however, I have made an attempt to isolate what I feel will remain constant moving forward, particularly in the context of developing native applications with the Flash Platform across a variety of screens. </p>
<h3>First, User Experience Design</h3>
<p>My initial thoughts on the implications of what a Multiscreen paradigm will have on the way we think about the design of software are primarily concerned with <a href="http://en.wikipedia.org/wiki/User_experience_design" target="_blank">User Experience Design</a> (UX Design). While simply using <a href="http://www.w3.org/TR/css3-mediaqueries/" target="_blank">CSS3 media queries</a> to facilitate dynamic runtime layouts will be needed for most HTML based web applications, I do not believe these types of solutions alone will allow for the kinds of compelling experiences users have come to expect. Sure they are useful, and for some HTML based websites they may suffice. However, in the context of more complex applications, RIAs in particular, but also just about every application developed specifically for a PC, too, I believe UX Design will need to encompass the best of what a particular form factor, &#8220;screen&#8221; or whatever you prefer to call it, has to offer, be it a <a href="http://en.wikipedia.org/wiki/Personal_computer" target="_blank">PC</a>, <a href="http://en.wikipedia.org/wiki/Smartphone" target="_blank">smartphone</a>, <a href="http://en.wikipedia.org/wiki/Tablet_device" target="_blank">tablet</a> or <a href="http://en.wikipedia.org/wiki/Internet_television" target="_blank">TV</a>. </p>
<p>For example, it is extremely rare that a UX Design intended for users of a PC will translate directly to a Mobile or Tablet User Experience. The interactions of a traditional physical keyboard and mouse do not equate to those of <a href="http://www.mobiledia.com/glossary/228.html" target="_blank">soft keys</a>, <a href="http://en.m.wikipedia.org/wiki/Virtual_keyboard" target="_blank">virtual keyboards</a> and <a href="http://www.lukew.com/touch/TouchGestureGuide.pdf" target="_blank">touch gesture</a> interactions. Moreover, the navigation and transitions between different views and even certain concepts and metaphors are completely different. In simplest terms; it&#8217;s not &#8220;Apples to Apples&#8221;, as the expression goes.</p>
<p>With this in mind, UX Design should remain at the forefront of Software Design, and in order for that to happen UX Design will not only need to continue to reflect the needs of users, but also by leverage the capabilities of the particular devices and screens on which an application will run. This is necessary as it better serves the needs of users in new and useful ways. Likewise, UX Design will need to account for the limitations (resources in particular) of those same form factors.</p>
<h3>Second, Architecture</h3>
<p>Mulitiscreen design obviously poses some new challenges considering the growing number of form factors which will need to be taken into account. The good news is most existing well designed software architectures have been designed with this in mind all along. That is, the key factor in managing this complexity I believe will be code reuse. A common theme amongst many of my posts, code reuse has many obvious benefits, and in the context of Multiscreen concerns it will allow for different screen specific applications to leverage general, well defined and well tested APIs. Code reuse will certainly be of tremendous value when considering the complexities encountered with Multiscreen design. Such shared APIs can be reused across applications which are designed for particular screens or extended to provide screen / device specific implementations.</p>
<p>For example, the Architectures I have worked on are designed such that each is broken out into specific modules (libraries) which, on a high level, are typically as follows:</p>
<ul>
<li><strong>unittesting-support</strong>: Provides convenience extensions of unit testing and mock frameworks.</li>
<li><strong>commons:</strong> Provides all generic, reusable APIs which have no dependencies outside of those of the Flex Framework and Flash Player API. </li>
<li><strong>framework-support:</strong> Provides reusable extensions of a particular framework. There can be multiple framework-support libraries, each of which would be specific to an individual framework; e.g. parsley-support, swiz-support, robotlegs-support, cairngorm-support, springactionscript-support etc.</li>
<li><strong>business:</strong> Provides domain dependent, business specific reusable APIs which are common amongst all projects within the business domain. This includes domain models, shared services, Presentation Models, UI components and anything else which is specific to the business domain. While all of the previously listed libraries could be used with any AS3 / Flex project, the business library is intentionally coupled to the domain.</li>
</ul>
<p>All of the above projects are used by the different business applications, allowing for significantly reduced complexity of each individual application. Moreover, each library provides isolated test coverage which allows for a greater sense of confidence when building applications which are dependent on them. This type of structure also lends itself well with common SCM and build conventions, allowing for simplified branching and versioning.</p>
<p>Architectures designed similar to what I have described above I would consider to be &#8220;multiscreen ready&#8221; (provided they are optimized and efficient) in that much of the underlying implementation has already been completed, tested and proven. What&#8217;s left is the mobile, tablet or TV application designs which should be mainly concerned with UX, particularly interactions, navigation and device capabilities. From these screen specific UX Designs the application architecture is mainly focused around view concerns specific to those devices; leveraging the existing APIs as needed. This is where the <a href="http://www.martinfowler.com/eaaDev/PresentationModel.html" target="_blank">Presentation Model Pattern</a> (which I have been recommending for years) or similar patterns will be of great value. </p>
<p>I also anticipate additional libraries being abstracted in addition to those I have listed above as a result of these device specific projects being developed. For example, I could easily imagine &#8220;device-support&#8221;, &#8220;mobile-support&#8221; and &#8220;tablet-support&#8221; projects which would provide reusable APIs specific for those screens so as to be leveraged across applications. In fact, I am working on libraries such as these at the moment.</p>
<p>Reusable libraries are nothing new; however, their role now is perhaps even more important as it is quite likely that multiple implementations of the same application will be needed for the various form factors and contexts. Existing reusable libraries may also need to be further optimized to provide the best performance against the slowest devices in order to be considered suitable for devices with the most limited resources. A natural side effect of such optimizations is that implementations of an application targeting the fastest form factors (typically, PCs) will benefit greatly.</p>
<h3>Some Concluding Thoughts</h3>
<p>In short, I believe both users and developers alike will be best served by providing unique User Experiences for specific screens as opposed to attempting to adapt the same application across multiple screens. One of the easiest ways of managing the complexity of multiscreen design and development will inevitably be code reuse. </p>
<p>I also believe the main point of focus should be on the medium and small form factors; i.e. Tablets and Smart phones. Not only for the more <a href="http://www.lukew.com/ff/entry.asp?933" target="_blank">common reasons</a> but, also because I believe PCs and Laptops will eventually be used almost exclusively for developing the applications which run on the other form factors. In fact, I can say this from my own experiences already.</p>
<p>While there is still much to learn in the area of Multiscreen Design, I feel the ideas I&#8217;ve expressed here will remain relevant. Over the course of the coming months I plan to dedicate much of my time towards further exploration of this topic and will certainly continue to share my findings.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2011/03/06/multiscreen-software-design/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Advanced Flex 4</title>
		<link>http://www.ericfeminella.com/blog/2010/09/17/advanced-flex-4/</link>
		<comments>http://www.ericfeminella.com/blog/2010/09/17/advanced-flex-4/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 01:26:32 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=1161</guid>
		<description><![CDATA[This morning I received a copy of the new Book Advanced Flex 4, written by my friend Elad Elrom and Shashank Tiwari, with contributions by Charlie Schulze. Upon opening the package and browsing the first few pages, I was quite flattered to read: &#8220;I would also like to thank Eric Feminella who has inspired me, [...]]]></description>
			<content:encoded><![CDATA[<p>This morning I received a copy of the new Book <a href="http://www.friendsofed.com/book.html?isbn=9781430224839" target="_blank">Advanced Flex 4</a>, written by my friend <a href="http://www.friendsofed.com/designer.html?isbn=1430224835#a480" target="_blank">Elad Elrom</a> and <a href="http://www.friendsofed.com/designer.html?isbn=1430224835#a479" target="_blank">Shashank Tiwari</a>, with contributions by Charlie Schulze. </p>
<p>Upon opening the package and browsing the first few pages, I was quite flattered to read:</p>
<blockquote><p>&#8220;I would also like to thank Eric Feminella who has inspired me, mentored me and helped me to become a better Flex Architect. I had the pleasure of working with Eric at Weight Watchers three years ago and I have found that Eric is one of the smartest, yet extremely humble, people I have ever met. He has a deep understanding in OOP, Architecting Flex apps, as well as RIA in general. Check his blog here: http://www.ericfeminella.com/blog/ and follow him on Twitter: @ericfeminella&#8221;</p></blockquote>
<p>It is always nice to receive recognition for something; however, the real reward is in knowing you have had a positive impact on someone; especially when it results in helping to push the Flash Platform Forward &#8211; and <a href="http://www.oreillynet.com/pub/au/3671">Elad</a> has certainly been doing just that. </p>
<p>The book covers an awful lot of ground &#8211; everything from Mobile Applications, AIR 2.0, Flash Catalyst, Data Service Integration, consuming Web 2.0 APIs, Flex Mashups, Audio, Video, 3D and more. I especially like the the Chapter on Flash Player Security. The book also appears to follow the theme of traditional software development best practices, that is, the first chapter is on Test Driven Development &#8211; test first. I highly recommend reading this book.</p>
<p><a href="http://www.amazon.com/AdvancED-Flex-4-Shashank-Tiwari/dp/1430224835" target="_blank"><img src="http://ericfeminella.com/blog/images/advanced-flex4.jpg" alt="Advanced Flex 4" float="left" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2010/09/17/advanced-flex-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Timing Specification</title>
		<link>http://www.ericfeminella.com/blog/2010/07/20/web-timing-specification/</link>
		<comments>http://www.ericfeminella.com/blog/2010/07/20/web-timing-specification/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 09:02:05 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[APIs]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[html5 family]]></category>
		<category><![CDATA[mobile web]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web timing]]></category>

		<guid isPermaLink="false">http://www.ericfeminella.com/blog/?p=993</guid>
		<description><![CDATA[The Web Timing Specification (draft) aims at providing a standard set of APIs which allow for true end-to-end instrumentation of page load times across browsers. To quote the w3 spec: &#8220;This specification (Web Timing Specification) defines an interface for web applications to access timing information related to navigation and elements.&#8221; The API is based on [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://dev.w3.org/2006/webapi/WebTiming/" target="_blank">Web Timing Specification</a> (draft) aims at providing a standard set of APIs which allow for true end-to-end instrumentation of page load times across browsers. </p>
<p>To quote the w3 spec: &#8220;This specification (Web Timing Specification) defines an interface for web applications to access timing information related to navigation and elements.&#8221; The API is based on the <a href="http://dev.w3.org/2006/webapi/WebTiming/#navigation-timing">Navigation Timing</a> and <a href="http://dev.w3.org/2006/webapi/WebTiming/#resource-timing">Resource Timing</a> interfaces, respectively.  </p>
<p>While I haven&#8217;t seen this specification mentioned as part of the <a href="http://www.ericfeminella.com/blog/2010/07/18/the-html5-family/" target="_blank">HTML5 Family</a> before, in many ways I would consider it to be a worthy candidate for membership as it provides a standards based API through which web applications can be tested for load efficiency. This is obviously something quite useful for any web application as, the ability to precisely measure page load times &#8211; and implement optimizations as needed &#8211; affords developers the opportunity to provide an improved user experience.</p>
<p>Historically, the ability to accurately measure page load times of web applications has been quite challenging for a number reasons. Just knowing when and where to begin is debatable and, determining the best means of doing so can be a challenge in of itself. Regardless of any current strategies being used, the result is never entirely accurate. With Web Timing developers need not be concerned with these specifics as the API provides the ability to truly measure page load times by encompassing the full scope of loading and parsing a page. This includes the time involved to request, receive and render an HTML document.</p>
<p>For more information, try out the examples in the current supported browsers; <a href="http://ie.microsoft.com/testdrive/Performance/msPerformance/Default.html" target="_blank">IE9</a>, <a href="http://webtimingdemo.appspot.com/?r=1&#038;b=1&#038;l=1&#038;bustcache=1280702927892" target="_blank">Chrome 6</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericfeminella.com/blog/2010/07/20/web-timing-specification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

