<?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>Andrew Trice</title>
	<atom:link href="http://www.tricedesigns.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tricedesigns.com</link>
	<description>Explorations and Evangelism in Technology</description>
	<lastBuildDate>Thu, 10 May 2012 20:54:20 +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>Prototypal Inheritance &amp; Strategies for Debugging Tough Problems</title>
		<link>http://www.tricedesigns.com/2012/05/10/prototypal-inheritance-strategies-for-debugging-tough-problems-2/</link>
		<comments>http://www.tricedesigns.com/2012/05/10/prototypal-inheritance-strategies-for-debugging-tough-problems-2/#comments</comments>
		<pubDate>Thu, 10 May 2012 19:57:51 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=2118</guid>
		<description><![CDATA[I recently ran into an issue on app-UI where child views were having their touch/mouse event listeners removed once another view was pushed onto the stack in the ViewNavigator component. If you haven&#8217;t seen it yet, app-UI is a collection of reusable &#8220;application container&#8221; components for building native-like mobile experiences for apps built with web technologies.   It is still in [...]]]></description>
			<content:encoded><![CDATA[<p>I recently ran into an issue on <a href="http://triceam.github.com/app-UI/" target="_blank">app-UI</a> where child views were having their touch/mouse event listeners removed once another view was pushed onto the stack in the <a href="http://triceam.github.com/app-UI/examples/samples/04%20-%20browser%20history/index.html" target="_blank">ViewNavigator</a> component.</p>
<blockquote><p><span style="color: #000000;"><em>If you haven&#8217;t seen it yet, <a href="http://triceam.github.com/app-UI/" target="_blank"><span style="color: #000000;">app-UI</span></a> is a collection of reusable &#8220;application container&#8221; components for building native-like mobile experiences for apps built with web technologies.   It is still in the very early stages of development, and I&#8217;m actively working on it&#8230; so <a href="https://github.com/triceam/app-UI/issues" target="_blank"><span style="color: #000000;">please let me know if you run into any issues or suggestions</span></a>.</em></span></p></blockquote>
<p>I scoured through all of my application and framework code, but just couldn&#8217;t seem to figure out why/where event listeners were being removed.   What I needed to do was simple, figure out where &#8220;removeEventListener&#8221; was being invoked.  &#8220;removeEventListener&#8221; is a native function, so you can&#8217;t set a breakpoint to see every instance where it is being invoked, right?</p>
<p>Actually, you can, but you have to look at the problem just a bit differently&#8230;</p>
<p>You can&#8217;t set a breakpoint on a native function, however, since JavaScript uses <a href="http://en.wikipedia.org/wiki/Prototype-based_programming" target="_blank">prototypal inheritance</a> you can change the prototype of an object to change its behavior and override native functions.  Since you can modify an object prototype, changes to that object&#8217;s prototype will be applied to all instances of that object type.   So, you can add some debugging code to override the behavior of HTMLElement&#8217;s &#8220;removeEventListener&#8221; function.</p>
<p>First, make a copy of the original removeEventListener function on the HTMLElement.prototype:</p>
<pre class="brush: jscript; title: ; notranslate">HTMLElement.prototype.originalRemoveEventListener
        = HTMLElement.prototype.removeEventListener</pre>
<p>Next, override the original removeEventListener function, add a console.log() statement, and then invoke the original removeEventListener function that you just made a copy of:</p>
<pre class="brush: jscript; title: ; notranslate">HTMLElement.prototype.removeEventListener = function(type, listener, useCapture)
{
    console.log('remove: ' + type);
    this.originalRemoveEventListener(type, listener, useCapture);
};</pre>
<p>Now, every time that the HTMLElement&#8217;s removeEventListener function is invoked, you will get a console.log() statement.  Not only do you get console debugging, but you can now set a breakpoint inside of the new, overridden, removeEventListener function.   Using the breakpoint, you can use your developer tools to view the call stack and track down where the removeEventListener function is being invoked. Thus, you can track down the root of your issue.  I use the <a href="https://developers.google.com/chrome-developer-tools/docs/overview" target="_blank">Chrome developer tools</a>, but similar tools are also available in <a href="https://developer.apple.com/technologies/safari/developer-tools.html" target="_blank">Safari</a>, <a href="http://getfirebug.com/" target="_blank">FireFox</a>, <a href="http://msdn.microsoft.com/en-us/library/ie/gg589507(v=vs.85).aspx" target="_blank">IE</a>, and <a href="http://www.opera.com/developer/tools/" target="_blank">Opera</a>.</p>
<p>Using the call stack, I was able to track down that I was inadvertently calling jQuery&#8217;s <a href="http://api.jquery.com/remove/" target="_blank">remove()</a> function on the view&#8217;s DOM element, instead of jQuery&#8217;s <a href="http://api.jquery.com/detach/" target="_blank">detach()</a> function.  Both <code>remove()</code> and <code>detach()</code> will remove your elements from the page&#8217;s <a href="http://en.wikipedia.org/wiki/Document_Object_Model" target="_blank">DOM</a>, however <code>remove()</code> also gets rid of any event listeners to prevent memory leaks. When I made the one-line code change from remove() to detach(), everything resumed working as expected.  I then removed the debugging code.</p>
<p>Here&#8217;s the complete code in one snippet for overriding removeEventListener:</p>
<pre class="brush: jscript; title: ; notranslate">HTMLElement.prototype.originalRemoveEventListener
        = HTMLElement.prototype.removeEventListener;

HTMLElement.prototype.removeEventListener = function(type, listener, useCapture)
{
    console.log('remove: ' + type);
    this.originalRemoveEventListener(type, listener, useCapture);
};</pre>
<p>Prototypal inheritance gives you the ability to change the behavior of objects at runtime, and it can be incredibly powerful in building your HTML/JS applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/05/10/prototypal-inheritance-strategies-for-debugging-tough-problems-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transcript from Open Session on PhoneGap</title>
		<link>http://www.tricedesigns.com/2012/05/09/transcript-from-open-session-on-phonegap/</link>
		<comments>http://www.tricedesigns.com/2012/05/09/transcript-from-open-session-on-phonegap/#comments</comments>
		<pubDate>Thu, 10 May 2012 00:42:10 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Cordova]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[cordova]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[phonegap]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=2093</guid>
		<description><![CDATA[Yesterday Raymond Camden and I hosted an open session on PhoneGap. It was an opportunity for the community (you) to ask us questions. There was a great turnout, and we&#8217;ll likely be hosting another one of these sessions in the near future. Thanks to everyone who attended!  Check these links to see the full Q&#38;A [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday <a href="http://www.raymondcamden.com/" target="_blank">Raymond Camden</a> and I hosted an open session on PhoneGap. It was an opportunity for the community (you) to ask us questions. There was a great turnout, and we&#8217;ll likely be hosting another one of these sessions in the near future. Thanks to everyone who attended!  Check these links to see the <a href="https://gist.github.com/2640834" target="_blank">full Q&amp;A transcript</a>, and the <a href="https://gist.github.com/2640847" target="_blank">full chat transcript</a>, or <a href="http://www.raymondcamden.com/enclosures/sessionlogs.zip" target="_blank">download them directly from Ray&#8217;s blog</a>.  <em>(Please excuse the typos, we were answering these live, in real time, without any edits.)</em></p>
<p>Many of the questions were around the roadmap for PhoneGap/Cordova. You can access the PhoneGap/Cordova roadmap at: <a href="http://wiki.apache.org/cordova/RoadmapProjects" target="_blank">http://wiki.apache.org/cordova/RoadmapProjects</a></p>
<p>Feel free to post any additional questions, and stay tuned for the next open session.   If you have any feedback on how we could improve this session, please let us know!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/05/09/transcript-from-open-session-on-phonegap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Response to &#8220;Shell Apps and Silver Bullets&#8221;</title>
		<link>http://www.tricedesigns.com/2012/05/08/a-response-to-shell-apps-and-silver-bullets/</link>
		<comments>http://www.tricedesigns.com/2012/05/08/a-response-to-shell-apps-and-silver-bullets/#comments</comments>
		<pubDate>Wed, 09 May 2012 01:33:01 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Apps]]></category>
		<category><![CDATA[Cordova]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[multidevice]]></category>
		<category><![CDATA[phonegap]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=2071</guid>
		<description><![CDATA[There is an article floating around the web today, warning against &#8220;Shell Apps&#8221; and tools like PhoneGap.  The logic in this article has a few arguments that are misleading, and I&#8217;d like to introduce some counter arguments as they relate to PhoneGap and HTML experiences for comparison. The &#8220;Silver Bullet&#8221; First, the &#8220;Silver Bullet&#8221; argument&#8230; I have [...]]]></description>
			<content:encoded><![CDATA[<p>There is an article floating around the web today, warning against &#8220;<a href="http://sandofsky.com/blog/shell-apps.html" target="_blank">Shell Apps</a>&#8221; and tools like PhoneGap.  The logic in this article has a few arguments that are misleading, and I&#8217;d like to introduce some counter arguments as they relate to <a href="http://phonegap.com" target="_blank">PhoneGap</a> and HTML experiences for comparison.</p>
<h2>The &#8220;Silver Bullet&#8221;</h2>
<p>First, the &#8220;Silver Bullet&#8221; argument&#8230; I have never seen it stated anywhere that PhoneGap is a &#8220;Silver Bullet&#8221; that will solve every problem for every application developer.   PhoneGap is a tool for developing applications.  It enables developers to build applications in situations where they may not have otherwise, including:</p>
<ul>
<li>No knowledge of native development</li>
<li>Existing web development skills</li>
<li>Reuse of assets across platforms or leverage existing code/assets</li>
<li>Lower barrier of entry in the mobile app world</li>
</ul>
<p>PhoneGap isn&#8217;t a &#8220;magical&#8221; solution to end all other solutions.  It is a toolset that enables you to build &amp; bundle natively installed applications using web technologies.  For more detail on what exactly PhoneGap is, see this post &#8220;<a href="http://phonegap.com/2012/05/02/phonegap-explained-visually/" target="_blank">PhoneGap Explained Visually</a>&#8220;.  If you&#8217;d like to understand the motivations behind PhoneGap/Cordova, then look no further than <a href="http://phonegap.com/2012/05/09/phonegap-beliefs-goals-and-philosophy/" target="_blank">the PhoneGap blog</a>.</p>
<p>If you were building a house, would you use a butter knife to drive nails?  Or, would you use a sledgehammer for finishing touches? If you needed lumber for your house, would you go cut down a tree, cut some beams out of it for use in your house frame?  No, You wouldn&#8217;t do any of these.  You would use the right tool for the job, and you would use raw materials that you already have available or are easily accessible.</p>
<p>Chances are, if you are building an app, you would do the same thing.  There are cases where PhoneGap is not the best choice, but that does not mean there aren&#8217;t a huge number of cases where PhoneGap is a great choice (if not the best).  It does not make sense to have to rebuild everything from the ground up, or have to learn completely new skills just to build apps for a mobile platform.</p>
<h2>Increasing Complexity</h2>
<p>The article also makes claim that HTML/JS based apps are more complicated than native apps:</p>
<blockquote><p>At first things are easy. For simple screens, using a webview might be faster than writing a native implementation. As you add functionality to the webview, the complexity increases until you give up and write everything native.</p></blockquote>
<p>This is far from the truth.  There are 2 facts that are completely overlooked in this statement:</p>
<ol>
<li>You can write a &#8220;bad&#8221; or overly-complex application in any langauge.  Native development is not a silver bullet that prevents you from building &#8220;Bad&#8221; apps.</li>
<li>Native applications can also be extremely complicated &#8211; they are not inherently more simple.</li>
</ol>
<p>Regardless of the underlying technology, the more features, views, data models, and components that you have within an application will add to the overall complexity of that application.  This is precisely why people apply model-view-controller (MVC) development paradigms and software design patterns.</p>
<p>PhoneGap and hybrid/web development techniques are no exception to this rule.  You can create really simple apps very quickly without a high degree of computer programming skill, but creating complex applications requires real software development processes.  MVC, abstraction, encapsulation, separation of concerns, etc&#8230; all apply.  You can absolutely build complex applications with web technologies, but you must approach them in a structured manner &#8211; just as you would approach an enterprise-quality native application. If you do not approach a complex problem with proven software design principles from the beginning, you risk setting yourself up for failure regardless of the underlying technology.</p>
<p>I have significant experience in developing native applications, interactive development, HTML/JS, as well as developing with cross platform technologies.  Based on my own experience, I am far more productive with HTML &amp; JS/PhoneGap than I am with native development, and I can create applications that are just as complex.</p>
<p>That does not mean everyone will be the same as me.   A developer who comes from either the Objective-C or Java worlds and does not know HTML will likely be more productive with native development &#8211; once they learn the libraries and paradigms for native mobile development. Likewise, developers who are already proficient with interactive development for the web will be more productive using web technologies.  One cannot make generalizations about a software tool or productivity when the use cases and developer skills are so widely varied.</p>
<h2>The Framework Tax</h2>
<p>The article makes the claim that you end up paying a &#8220;tax&#8221; by using frameworks such as PhoneGap:</p>
<blockquote><p>You could use an open source shell-app framework like PhoneGap, but that leaves you at the mercy of their schedule. If the native platform introduces a new API, or you run into an edge case that requires extending the shell framework, it could be months before you can implement your own app’s functionality.</p></blockquote>
<p>Again, this is not entirely accurate.  The <a href="http://phonegap.com/2012/05/09/phonegap-beliefs-goals-and-philosophy/" target="_blank">goal of PhoneGap</a> is not to recreate &amp; mirror every native API on every platform.  Rather, to provide a consistent API for building your applications across multiple platforms, using familiar web development skills, and to push the web forward.   There are certainly APIs on all platforms that it does not support.</p>
<p>Luckily, PhoneGap is built on top of an extensible architecture, so that if you wanted to take advantage of a new API, you can create your own native plugins (yes, in native code) to expose that functionality for use within your PhoneGap applications.  If you do not want to wait on the PhoneGap/Cordova open source initiative, then you can build it yourself without delay.  You do not need to fork the framework for this, rather you extend it within your own projects.   There&#8217;s also a good chance that someone has already written a native plugin and posted it on github that you can reuse.</p>
<h2>Browser Fragmentation</h2>
<p>Well, you have a point there&#8230; <em>to a point.</em> There are definite browser fragmentation issues.   Webkit on iOS != Webkit on Android != Webkit on BlackBerry != IE/Trident on Win Phone, etc&#8230;  However, this is generally related to presentation styles, not core browser functionality.  It is important to use tools like <a href="http://caniuse.com" target="_blank">caniuse.com</a> when you are evaluating your development strategy and <a href="http://modernizr.com/" target="_blank">modernizr</a> during implementation phases (for graceful degradation).  While there are variations in the browsers, it doesn&#8217;t mean that your architectural patterns, your business logic, or your data model are going to be different.</p>
<p>Different browsers on different platforms also have different performance metrics, and you need to build your application experience based on what you are trying to create. Do not try to force a slow browser to be fast; that will never work.</p>
<h2>Versioning</h2>
<p>The versioning argument in that article sates &#8220;hybrid apps allow you to update&#8221; is not entirely true:</p>
<blockquote><p>Shell app let you update content without requiring a full app release by serving your pages off a server. In the process, you lose release atomicity, the assurance that whatever you ship to clients comes in one complete, unchanging bundle.</p></blockquote>
<p>Yes, you can serve web pages, and if you have native content around the web content, then it could be mismatched.  However, it is important to understand that you can&#8217;t create apps with HTML technologies that update their own code withinin the local app bundle on the device based off of code downloaded from a server.</p>
<p>If you build an app that bypasses Apple&#8217;s App Store and updates itself automatically, it will get rejected.   You may be able to pull down data/content or images and cache them locally, but a &#8220;full app release&#8221; is not possible.   The <a href="https://developer.apple.com/appstore/resources/approval/guidelines.html" target="_blank">Apple Developer Agreement</a> explicitly says in section 2.7:</p>
<blockquote><p>&#8220;<strong>Apps that download code in any way or form will be rejected</strong>&#8220;</p></blockquote>
<p>Likewise, &#8220;Users may wait weeks or months to update apps&#8221; applies to native development as well. If your users don&#8217;t update, then they don&#8217;t update.  In this case the mobile branding may not match the website branding.  This happens regardless of technology choice.</p>
<h2>The Uncanny Valley</h2>
<p>There is merit to the uncanny valley argument (html based apps don&#8217;t always feel &#8220;right&#8221;), but that does not mean it is impossible to build native-feeling applications using HTML and JavaScript.  The trick is that you must design these apps to feel like applications, not like web pages.  Here are a few apps that are built using HTML-based technology: <a href="http://itunes.apple.com/us/app/apple-store/id375380948?mt=8" target="_blank">Apple Store</a>, <a href="http://itunes.apple.com/us/app/facebook/id284882215?mt=8" target="_blank">Facebook</a>, <a href="http://itunes.apple.com/us/app/linkedin/id288429040?mt=8" target="_blank">LinkedIn</a>, <a href="http://itunes.apple.com/us/app/wikipedia-mobile/id324715238?mt=8" target="_blank">Wikipedia</a>, <a href="http://itunes.apple.com/us/app/mw-classic-by-zynga/id305904856?mt=8" target="_blank">Mafia Wars</a>, <a href="http://itunes.apple.com/us/app/us-census-browser/id483201717?mt=8" target="_blank">US Census Browser</a>, <a href="http://itunes.apple.com/us/app/bit-timer/id505848680?mt=8" target="_blank">Bit Timer</a>, <a href="http://itunes.apple.com/us/app/untappd/id449141888?ls=1&amp;mt=8" target="_blank">Untappd</a>, and even the &#8220;revolutionary&#8221; <a href="https://developer.apple.com/iad/" target="_blank">iAd</a> advertising experience from Apple are all built on top of HTML.  <em>(This is by no means a definitive list of all HTML-based apps either.)</em></p>
<p>Some of these apps you might already use on a daily basis. The &#8220;uncanny valley&#8221; argument really comes down to UX design, and giving your HTML application a first-rate experience.  If you do not invest in your user experience, it will not feel right.  Some of these apps show up in Apple&#8217;s recommendation lists&#8230; would Apple recommend bad apps to us in the &#8220;walled garden&#8221; that they have worked so hard to curate?</p>
<h2>Performance</h2>
<p>Again, this is a question of using the right tool for the right job.   You would likely not build a 3D modelling application using HTML/JS, but you could easily build a word game experience, an enterprise data reporting front-end client, or content-centric experience using HTML &amp; JavaScript.  There are things that you need to do to make sure your HTML-based experiences perform well, such as using touch events instead of mouse events (mouse events in web views can have an OS lag up to 3-400 MS, where touch events do not).  Or, using CSS3 translate3D transforms to enable GPU-rendering on DOM content. Perception of an application boils down to creating a proper user experience.  You can absolutely create a great user experience with HTML &amp; related technologies, but I wouldn&#8217;t use it for super-computing tasks.</p>
<p>If your app requires intense data crunching for a computationally intensive task, you can always drop down to a PhoneGap native plugin to perform the heavy lifting for you.</p>
<h2>Write Once, Run Everywhere</h2>
<p>When was the last time you saw a computer or device that could not render HTML content?   I have several devices at my disposal for work: 3 Android devices, 2 iOS devices, 1 Windows Phone, 1 Blackberry, and a Macbook.  None of these devices is incapable of rendering web content.  HTML is the most widely distributed and pervasive means of presenting digital information in a visual manner, and it has been around for decades.</p>
<h2>The Right Tool</h2>
<p>As mentioned in the original post, <strong>use the right tool for the job.</strong> Don&#8217;t force a solution that doesn&#8217;t fit, but also don&#8217;t over-generalize your technology decisions based upon incorrect assumptions. I can build a responsive layout with dynamic content far easier in HTML than I can in native Objective-C, but building a triple-A quality game isn&#8217;t even close to achievable in HTML. It all depends on context:</p>
<ul>
<li>What are you trying to build?</li>
<li>Who are you building it for?</li>
<li>What are the UX requirements?</li>
<li>Who is building it, and what are their skills?</li>
<li>What is your budget?</li>
</ul>
<p>There is no doubt or question in my mind &#8211; You can absolutely build incredible app experiences that truly feel like apps using web based technologies.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/05/08/a-response-to-shell-apps-and-silver-bullets/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Open Session on PhoneGap</title>
		<link>http://www.tricedesigns.com/2012/05/07/2066/</link>
		<comments>http://www.tricedesigns.com/2012/05/07/2066/#comments</comments>
		<pubDate>Mon, 07 May 2012 14:08:31 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[phonegap]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=2066</guid>
		<description><![CDATA[Curious about PhoneGap? Have questions? Tomorrow, fellow Adobe Evangelist Ray Camden and I are hosting a 2 hour Adobe Connect session on PhoneGap. This will be an open session for your questions, not a presentation. The Connect URL is: http://my.adobeconnect.com/adobehtml. The date/time is Tuesday 2PM EST to 4PM EST (11AM PST to 1PM PST).]]></description>
			<content:encoded><![CDATA[<p>Curious about PhoneGap? Have questions? Tomorrow, fellow Adobe Evangelist <a href="http://www.raymondcamden.com/">Ray Camden</a> and I are hosting a 2 hour Adobe Connect session on PhoneGap. This will be an open session for <em><strong>your</strong></em> questions, not a presentation. The Connect URL is: <a href="http://my.adobeconnect.com/adobehtml">http://my.adobeconnect.com/adobehtml</a>. The date/time is Tuesday 2PM EST to 4PM EST (11AM PST to 1PM PST).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/05/07/2066/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Debugging App-UI with Adobe Shadow</title>
		<link>http://www.tricedesigns.com/2012/05/03/debugging-app-ui-with-adobe-shadow/</link>
		<comments>http://www.tricedesigns.com/2012/05/03/debugging-app-ui-with-adobe-shadow/#comments</comments>
		<pubDate>Thu, 03 May 2012 19:24:12 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[multidevice]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=2059</guid>
		<description><![CDATA[Adobe Shadow has been out for over a month now, and I&#8217;ve finally had a chance to start integrating it into my development workflow.  Shadow is a new tool that provides you with a synchronized desktop &#38; mobile browsing experience, and it even lets you inspect &#38; modify the HTML DOM on the remote devices. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.adobe.com/technologies/shadow/" target="_blank">Adobe Shadow</a> has been out for over a month now, and I&#8217;ve finally had a chance to start integrating it into my development workflow.  Shadow is a new tool that provides you with a synchronized desktop &amp; mobile browsing experience, and it even lets you inspect &amp; modify the HTML DOM on the remote devices.  Basically, you just connect the devices, then navigate your content on any of the connected devices for a synchronized browsing experience. Fellow Adobe employee Christian Cantrell has a great <a href="http://blogs.adobe.com/cantrell/archives/2012/05/a-complete-tour-of-adobe-shadow-in-10-minutes-including-integration-with-livereload.html" target="_blank">video overview of Adobe Shadow on his blog</a>, if you&#8217;d like to learn more.</p>
<p>I&#8217;ve been focusing on multi-platform HTML-based solutions, especially with the <a href="http://triceam.github.com/app-UI/" target="_blank">app-UI</a> framework/library.  Shadow has become very handy when testing features on multiple devices.  App-UI is a free &amp; open source collection of reusable &#8220;application container&#8221; user interface components that may be helpful to web and mobile developers for creating interactive applications using HTML and JavaScript.</p>
<p>Basically, I just point the desktop Chrome browser at the page I want to test on my devices, and all devices will navigate to that particular page.  Quick, easy, and to the point.   Check out the video below where you can see the synchronized browsing experience in action.</p>
<p><iframe src="http://www.youtube.com/embed/CEwoVe2aETo?rel=0" frameborder="0" width="560" height="315"></iframe></p>
<p>In my examples that have browser history integration you can even see that selecting an item in the list causes all devices to navigate to the selected item (starting at 25 seconds into the video).  It does not yet necessarily solve every issue around button clicks and scrolling, but it certainly helps streamline the testing of a single page/experience on multiple devices.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/05/03/debugging-app-ui-with-adobe-shadow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rapid Prototyping With PhoneGap</title>
		<link>http://www.tricedesigns.com/2012/05/02/rapid-prototyping-with-phonegap/</link>
		<comments>http://www.tricedesigns.com/2012/05/02/rapid-prototyping-with-phonegap/#comments</comments>
		<pubDate>Wed, 02 May 2012 13:49:28 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Cordova]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[devices]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[phonegap]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=2019</guid>
		<description><![CDATA[Last week I gave a presentation to a local DC Meetup group on &#8220;Rapid Prototyping with PhoneGap&#8220;. The main takeaways are: PhoneGap is great for rapid prototyping. Don&#8217;t limit yourself to a prototype! PhoneGap is awesome for building real-world production applications targeting multiple platforms! You can check out my presentation here: Rapid Prototyping with PhoneGap.pdf [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I gave a presentation to a local DC Meetup group on &#8220;Rapid Prototyping with <a href="http://www.phonegap.com/" target="_blank">PhoneGap</a>&#8220;. The main takeaways are:</p>
<ol>
<li>PhoneGap is great for rapid prototyping.</li>
<li>Don&#8217;t limit yourself to a prototype! PhoneGap is awesome for building real-world production applications targeting multiple platforms!</li>
</ol>
<p>You can check out my presentation here:<br />
<a href="http://www.tricedesigns.com/presentations/Rapid%20Prototyping%20with%20PhoneGap.pdf" target="_blank"><img class="aligncenter size-full wp-image-2020" style="border: 1px solid #666;" title="prototyping" src="http://www.tricedesigns.com/wp-content/uploads/2012/05/prototyping.jpg" alt="" width="550" height="310" /></a></p>
<ul>
<li><a href="http://www.tricedesigns.com/presentations/Rapid%20Prototyping%20with%20PhoneGap.pdf" target="_blank">Rapid Prototyping with PhoneGap.pdf</a></li>
</ul>
<hr />
<p>Some reasons why you might want to use PhoneGap for rapid prototyping:</p>
<ul>
<li><strong>It’s easy</strong></li>
<ul>
<li>More people know HTML &amp; JS, over native development</li>
<li>Lower barrier of entry in mobile development</li>
<li>Integrate seamlessly with HTTP services</li>
</ul>
<li><strong>It can cost less &amp; can get done faster</strong></li>
<ul>
<li>Reduced developer hours + web designers can build the prototypes</li>
<li>Less development effort = faster turnaround</li>
</ul>
</ul>
<hr />
<p>Here are the real-world PhoneGap apps that I demonstrated:</p>
<p><strong>Wikipedia Mobile </strong>- The official mobile application for wikipedia.</p>
<ul>
<li>iOS: <a href="http://itunes.apple.com/us/app/wikipedia-mobile/id324715238?mt=8" target="_blank">http://itunes.apple.com/us/app/wikipedia-mobile/id324715238?mt=8</a></li>
<li>Android: <a href="https://play.google.com/store/apps/details?id=org.wikipedia&amp;hl=en" target="_blank">https://play.google.com/store/apps/details?id=org.wikipedia&amp;hl=en</a></li>
<li>BlackBerry Playbook: <a href="http://appworld.blackberry.com/webstore/content/105171" target="_blank">http://appworld.blackberry.com/webstore/content/105171</a></li>
</ul>
<p><strong>Halo Waypoint</strong> &#8211; Companion application to the Halo game for Xbox &amp; Xbox Live.</p>
<ul>
<li>iOS: <a href="http://itunes.apple.com/us/app/halo-waypoint/id468457600?mt=8" target="_blank">http://itunes.apple.com/us/app/halo-waypoint/id468457600?mt=8</a></li>
<li>Android: <a href="https://play.google.com/store/apps/details?id=com.halo.companion&amp;hl=en" target="_blank">https://play.google.com/store/apps/details?id=com.halo.companion&amp;hl=en</a></li>
</ul>
<p><strong>Untappd</strong> &#8211; Social networking with beer.</p>
<ul>
<li>iOS: <a href="http://itunes.apple.com/us/app/untappd/id449141888?ls=1&amp;mt=8" target="_blank">http://itunes.apple.com/us/app/untappd/id449141888?ls=1&amp;mt=8</a></li>
<li>Android: <a href="https://play.google.com/store/apps/details?id=com.untappdllc.app" target="_blank">https://play.google.com/store/apps/details?id=com.untappdllc.app</a></li>
</ul>
<p><strong>US Census Browser</strong> &#8211; Visualizing data from the 2010 US Census</p>
<ul>
<li>iOS: <a href="http://itunes.apple.com/us/app/census-browser/id483201717" target="_blank">http://itunes.apple.com/us/app/census-browser/id483201717</a></li>
<li>Android: <a href="https://play.google.com/store/apps/details?id=com.tricedesigns.CensusBrowser" target="_blank">https://play.google.com/store/apps/details?id=com.tricedesigns.CensusBrowser</a></li>
</ul>
<hr />
<p>I covered techniques for making your apps feel like &#8220;apps&#8221;, not &#8220;web pages&#8221;.   You can read more about these techniques and useful libraries in my recent post on <a href="http://www.tricedesigns.com/2012/05/02/360flex-multi-device-best-practices/" target="_blank">Multi-Device Best Practices</a>.  <em>Note: That post contains references to both Flex and HTML/JS/CSS tools.  In this presentation I focused only on the HTML/JS/CSS tools.</em></p>
<p>I also covered techniques for data visualization.   You can read about techniques for visualizing data using web standards technologies, and see serveral HTML/JS data visualization libraries from my recent post on &#8220;<a href="http://www.tricedesigns.com/2012/05/02/data-visualization-with-web-standards/" target="_blank">Data Visualization with Web Standards</a>&#8220;.</p>
<p>In this presentation, I covered <a href="http://build.phonegap.com" target="_blank">PhoneGap Build</a>, a cloud-based compilation tool for PhoneGap apps, and <a href="http://debug.phonegap.com" target="_blank">debug.phonegap.com</a> for remote application debugging.   I also covered <a href="http://www.iwebinspector.com/" target="_blank">iWebinspector</a> for debugging PhoneGap experiences inside of the iOS Simulator.</p>
<p>Let&#8217;s also not forget the real-world companies that have invested in PhoneGap/Apache Cordova, including Wikipedia, Facebook, Salesforce, IBM, and others.  You can read more about these companies from my recent post &#8220;<a href="http://www.tricedesigns.com/2012/03/27/who-uses-phonegapapache-cordova/" target="_blank">Who Uses PhoneGap</a>&#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/05/02/rapid-prototyping-with-phonegap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Visualization with Web Standards</title>
		<link>http://www.tricedesigns.com/2012/05/02/data-visualization-with-web-standards/</link>
		<comments>http://www.tricedesigns.com/2012/05/02/data-visualization-with-web-standards/#comments</comments>
		<pubDate>Wed, 02 May 2012 13:32:08 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[data vizualization]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=1995</guid>
		<description><![CDATA[I recently spoke at the 360&#124;Flex conference in Devner, CO on &#8220;Data Visualization with Web Standards&#8221;.  This presentation was focused upon techniques for presenting data in an easily-consumable visual manner using only HTML, CSS and JavaScript.  Below you can view my presentation slides and a brief summary. Web-Standards-Data-Viz.pdf Basically, there are 5 general ways to visualize [...]]]></description>
			<content:encoded><![CDATA[<p>I recently spoke at the <a href="http://www.360flex.com/" target="_blank">360|Flex</a> conference in Devner, CO on &#8220;Data Visualization with Web Standards&#8221;.  This presentation was focused upon techniques for presenting data in an easily-consumable visual manner using only HTML, CSS and JavaScript.  Below you can view my presentation slides and a brief summary.</p>
<p style="text-align: center;"><a href="http://www.tricedesigns.com/wp-content/uploads/2012/05/Web-Standards-Data-Viz1.pdf" target="_blank"><img class="aligncenter size-full wp-image-1985" style="border: 1px solid #666;" title="multi_Device" src="http://www.tricedesigns.com/wp-content/uploads/2012/05/Web-Standards-Data-Viz.jpg" alt="" width="550" height="309" /></a></p>
<ul>
<li><a href="http://www.tricedesigns.com/wp-content/uploads/2012/05/Web-Standards-Data-Viz1.pdf" target="_blank">Web-Standards-Data-Viz.pdf</a></li>
</ul>
<p>Basically, there are 5 general ways to visualize data using web-standards techniques &#8211; here is a brief overview with pros &amp; cons:</p>
<hr />
<h2>&lt;img&gt;</h2>
<p>You can embed images using the html &lt;img&gt; that have server-rendered data visualizations. This is nothing new&#8230; They are very basic, but will certainly work.</p>
<ul>
<li>Not interactive</li>
<li>Requires online &amp; round-trip to server</li>
<li>No &#8220;WOW&#8221; factor &#8211; let&#8217;s face it, they are boring</li>
<li>Example: <a href="https://developers.google.com/chart/image/" target="_blank">Google Image Charts</a></li>
</ul>
<hr />
<h2>HTML5 &lt;canvas&gt;</h2>
<p>You can use the HTML5 &lt;canvas&gt; element to programmatically render content based upon data in-memory using JavaScript. The HTML5 Canvas provides you with an API for rendering graphical content via moveTo or lineTo instructions, or by setting individual pixel values manually.  Learn more about the <a href="https://developer.mozilla.org/en/Canvas_tutorial" target="_blank">HTML5 canvas from the MDN tutorials</a>.</p>
<ul>
<li>Can be interactive</li>
<li>Dynamic &#8211; client side rendering with JavaScript</li>
<li>Hardware accelerated on some platforms</li>
<li>Can work offline</li>
<li>Works in newer browsers: <a href="http://caniuse.com/#search=canvas" target="_blank">http://caniuse.com/#search=canvas</a></li>
</ul>
<p>Demos:</p>
<ul>
<li><a href="http://www.rgraph.net/" target="_blank">Rgraph</a> &#8211; Open source charting library using HTML5 &lt;canvas&gt;</li>
<ul>
<li><a href="http://www.rgraph.net/examples/index.html" target="_blank">Examples</a></li>
</ul>
<li>&#8220;One Million Points&#8221; Scatter Plot &#8211; Let the page load, then use the mouse to click and drag regions to &#8220;drill into&#8221;.   This is a live visualization that shows a scatter plot with a histogram for massive data sets by manipulating individual pixels.</li>
<ul>
<li><a href="http://www.tricedesigns.com/portfolio/HTML5BitmapChart/" target="_blank">Demo with 50,000 data points</a></li>
<li><a href="http://www.tricedesigns.com/portfolio/HTML5BitmapChart/million.html">Demo with 1,000,000 data points</a></li>
<li><a href="http://www.tricedesigns.com/portfolio/HTML5BitmapChart/Archive.zip" target="_blank">Source code</a></li>
</ul>
<li><a href="http://itunes.apple.com/us/app/lil-doodle/id496228112?mt=8" target="_blank">&#8220;Lil Doodle&#8221; iOS App</a>.  This is not data visualization, just shows you programmatic drawing using HTML5 Canvas.</li>
</ul>
<hr />
<h2>Vector Graphics (SVG)</h2>
<p>Vector graphics can be used to create visual content in web experiences.</p>
<ul>
<li>Client or Server-side rendering</li>
<li>Can be static or dynamic</li>
<li>Can be scripted with JS</li>
<li>Can be manipulated via HTML DOM</li>
<li>Works in newer browsers (but not on Android 2.x and earlier): <a href="http://caniuse.com/#search=SVG" target="_blank">http://caniuse.com/#search=SVG</a></li>
</ul>
<p>Demos:</p>
<ul>
<li>&#8220;<a href="http://www.tricedesigns.com/2012/04/24/us-census-browser-v2-0/" target="_blank">US Census Browser</a>&#8221; &#8211; multi-platform <a href="http://www,phonegap.com" target="_blank">PhoneGap</a> application showing enterprise-class data visualization using web standards techniques.</li>
<li><a href="http://d3js.org/" target="_blank">D3.js</a> data visualization framework</li>
<li><a href="http://raphaeljs.com/" target="_blank">Raphael.js</a> data visualization framework</li>
<li><a href="http://www.highcharts.com/demo/" target="_blank">HighCharts</a> data visualization libarary</li>
<li><a href="http://www.sencha.com/products/touch/charts" target="_blank">Sencha Touch Charts</a></li>
<li><a href="http://demos.kendoui.com/dataviz/overview/index.html" target="_blank">Kendo UI DataViz</a></li>
</ul>
<hr />
<h2>HTML DOM Elements</h2>
<p>Visualizations like simple bar or column charts can be created purely with HTML structures and creative use of CSS styles to control position, visual presentation, etc&#8230; You can use CSS positioning to control x/y placement, and percentage-based width/height to display relative values based upon a range of data.   For example, the following bar chart/table is created purely using HTML DIV containers with CSS styles.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-2005" title="dom_viz" src="http://www.tricedesigns.com/wp-content/uploads/2012/05/dom_viz.jpg" alt="" width="550" height="261" /></p>
<hr />
<h2>WebGL</h2>
<p><a href="http://en.wikipedia.org/wiki/WebGL" target="_blank">WebGL</a> is on the &#8220;bleeding edge&#8221; of interactive graphics &amp; data visualization across the web. WebGL enables hardware-accelerated 3D graphics inside the browser experience. Technically, it is not a standard, and there is varied and/or incomplete support across different browsers (<a href="http://caniuse.com/#search=webgl" target="_blank">http://caniuse.com/#search=webgl</a>).  There is also considerable debate whether it ever will be a standard; however there are some incredible samples out on the web worth mentioning:</p>
<ul>
<li><a href="http://www.chromeexperiments.com/globe" target="_blank">WebGL Globe</a></li>
<li><a href="http://www.senchalabs.org/philogl/PhiloGL/examples/temperatureAnomalies/" target="_blank">Global Temperature Anomalies</a></li>
<li><a href="http://www.senchalabs.org/philogl/PhiloGL/examples/histogram/" target="_blank">Realtime Color Histogram</a></li>
</ul>
<p>Feel free to leave a comment with any questions.<br />
Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/05/02/data-visualization-with-web-standards/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Multi-Device Best Practices</title>
		<link>http://www.tricedesigns.com/2012/05/02/360flex-multi-device-best-practices/</link>
		<comments>http://www.tricedesigns.com/2012/05/02/360flex-multi-device-best-practices/#comments</comments>
		<pubDate>Wed, 02 May 2012 13:27:15 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[phonegap]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=1982</guid>
		<description><![CDATA[I recently spoke at the 360&#124;Flex conference in Devner, CO on &#8220;Multi-Device Best Practices&#8221;.  This presentation was focused upon multi-device &#38; multi-platform development strategies for both PhoneGap and Flex/AIR applications.  Below you can view my presentation slides and source code, and a brief summary. Multi-Device-Best-Practices.pdf First, I gave an overview of mobile &#38; multi-platform with AIR [...]]]></description>
			<content:encoded><![CDATA[<p>I recently spoke at the <a href="http://www.360flex.com/" target="_blank">360|Flex</a> conference in Devner, CO on &#8220;Multi-Device Best Practices&#8221;.  This presentation was focused upon multi-device &amp; multi-platform development strategies for both PhoneGap and Flex/AIR applications.  Below you can view my presentation slides and source code, and a brief summary.</p>
<p style="text-align: center;"><a href="http://www.tricedesigns.com/wp-content/uploads/2012/05/Multi-Device-Best-Practices2.pdf" target="_blank"><img class="aligncenter size-full wp-image-1984" style="border: 1px solid #666;" title="multi_Device" src="http://www.tricedesigns.com/wp-content/uploads/2012/05/multi_Device.jpg" alt="" width="550" height="309" /></a></p>
<ul>
<li><a href="http://www.tricedesigns.com/wp-content/uploads/2012/05/Multi-Device-Best-Practices2.pdf" target="_blank">Multi-Device-Best-Practices.pdf</a></li>
</ul>
<p>First, I gave an overview of mobile &amp; multi-platform with AIR and PhoneGap.  See these links for more detail on the platforms:</p>
<ul>
<li><a href="http://www.tricedesigns.com/2012/03/22/phonegap-explained-visually/" target="_blank">What is PhoneGap</a></li>
<li><a href="http://www.tricedesigns.com/2011/09/15/adobe-flex-air-one-developer-platform-many-devices/" target="_blank">Multi-platform development with AIR</a></li>
<li><a href="http://www.tricedesigns.com/2011/10/20/why-cross-platform-mobile-development/" target="_blank">Why cross-platform development?</a></li>
</ul>
<p>Next, I emphasized the differences in user experience, display density, usability, and application style/feel between different platforms and device form factors.  You can read more detail on these topics here:</p>
<ul>
<li><a href="http://www.tricedesigns.com/2011/09/29/flex-for-mobile-device-form-factor-detection/" target="_blank">Flex/AIR: Device form factor detection</a></li>
<li>Device form factor detection in PhoneGap (<a href="https://github.com/triceam/app-UI/tree/master/samples/05%20-%20multi-device%20form%20factor" target="_blank">example project</a>):<script type="text/javascript" src="https://gist.github.com/2570291.js?file=gistfile1.js"></script></li>
</ul>
<p>I also covered various libraries and techniques for making your creations feel like &#8220;native apps&#8221; instead of &#8220;web pages in a container&#8221;, and ways to make your apps look &amp; feel &#8220;more native&#8221; for a given platform.</p>
<p>Details on <strong>Flex/AIR</strong>-specific tools &amp; frameworks for native-like app experiences:</p>
<ul>
<li><a href="http://blogs.adobe.com/jasonsj/2011/06/ios-theme-for-flex-mobile-projects-proof-of-concept.html" target="_blank">Platform specific styles via CSS media queries</a></li>
<li><a href="http://e-skimo.com/" target="_blank">Eskimo framework for platform specific styles</a></li>
<li><a href="http://tricedesigns.com/portfolio/max2011/Multi-Device%20Best%20Practices%20-%20Workbook%20Samples.fxp" target="_blank">Flex Code Samples (FXP)</a></li>
</ul>
<p>Frameworks/Libraries for <strong>HTML/Web/PhoneGap, </strong>for &#8220;app-like&#8221; experiences:</p>
<ul>
<li><a href="http://twitter.github.com/bootstrap/" target="_blank">Twitter Boostrap</a></li>
<li><a href="http://foundation.zurb.com/" target="_blank">Zurb Foundation</a></li>
<li><a href="http://www.iui-js.org/" target="_blank">iUI</a></li>
<li><a href="http://jquerymobile.com/" target="_blank">jQuery Mobile</a></li>
<li><a href="http://jqueryui.com/" target="_blank">jQuery UI</a></li>
<li><a href="http://www.sencha.com/products/touch/" target="_blank">Sencha Touch</a></li>
<li><a href="http://demos.kendoui.com/" target="_blank">Kendo UI</a></li>
<li><a href="http://triceam.github.com/app-UI/" target="_blank">App-UI</a></li>
<li><a href="http://cubiq.org/iscroll-4" target="_blank">iScroll</a></li>
<li><a href="http://moobilejs.com/" target="_blank">Moobile JS</a></li>
</ul>
<p>Feel free to leave a comment with any questions.<br />
Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/05/02/360flex-multi-device-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Odd WebKit Bug with &lt;SPAN&gt; Elements</title>
		<link>http://www.tricedesigns.com/2012/04/30/odd-webkit-bug-with-elements/</link>
		<comments>http://www.tricedesigns.com/2012/04/30/odd-webkit-bug-with-elements/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 18:15:42 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Cordova]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[phonegap]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=1968</guid>
		<description><![CDATA[I stumbled upon a really odd bug in my current project, which I can only attribute to the WebKit browser engine, since I was able to recreate this in a UIWebView on iOS (in PhoneGap) and in Chrome on OS X &#8211; WebKit is the common engine in both. It&#8217;s a bizarre issue that is [...]]]></description>
			<content:encoded><![CDATA[<p>I stumbled upon a really odd bug in my current project, which I can only attribute to the WebKit browser engine, since I was able to recreate this in a UIWebView on iOS (in <a href="http://www.phonegap.com" target="_blank">PhoneGap</a>) and in Chrome on OS X &#8211; WebKit is the common engine in both. It&#8217;s a bizarre issue that is really easy to fix, but was dumbfounding since the user interface was not displaying what I was seeing in the WebKit debugging tools. I figured I&#8217;d share, in case anyone else runs into the same issue.</p>
<h3>The problem:</h3>
<p>I have a horizontal slider (custom HTML/JS) component, and content within a separate HTML &lt;span&gt; should be updated when the slider value changes. The JavaScript seemed to be working properly, I could see console.log output that showed events were being dispatched, but the UI wouldn&#8217;t display what I was seeing in the debugging tools. Instead, the UI would update sporadically with a value, but not consistently, and not for every time that I updated the HTML DOM.</p>
<h3>The solution:</h3>
<p>Set the CSS &#8220;display&#8221; property on the &lt;span&gt; element to &#8220;inline-block&#8221;, and everything works properly. This was a really strange issue since I could see the HTML DOM updates, but the actual UI wasn&#8217;t being updated.</p>
<p>If my description doesn&#8217;t seem to be making any sense, check it out in the video below.   Keep an eye on the HTML DOM structure, as well as the rendered output.</p>
<p><iframe src="http://www.youtube.com/embed/oVoPQ3JkyiY?rel=0" frameborder="0" width="560" height="315"></iframe></p>
<p>Unfortunately, it took way longer than I would have hoped to fix such a seemingly simple issue.   Hopefully this saves you some time if you run into it too!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/04/30/odd-webkit-bug-with-elements/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>US Census Browser v2.0</title>
		<link>http://www.tricedesigns.com/2012/04/24/us-census-browser-v2-0/</link>
		<comments>http://www.tricedesigns.com/2012/04/24/us-census-browser-v2-0/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 19:13:31 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Cordova]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[devices]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[phonegap]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=1935</guid>
		<description><![CDATA[I am happy to announce the US Census Browser version 2.0!  Back in December of 2011, I released the US Census Browser as an open source application intended to demonstrate principles for enterprise-class data visualization and applications developed with web standards.  This version has some fairly substantial changes &#8211; See the video below to check out features [...]]]></description>
			<content:encoded><![CDATA[<p>I am happy to announce the US Census Browser version 2.0!  Back in December of 2011, I <a href="http://www.tricedesigns.com/2011/12/05/introducing-the-us-census-browser-application/" target="_blank">released the US Census Browser</a> as an open source application intended to demonstrate principles for enterprise-class data visualization and applications developed with web standards.  This version has some fairly substantial changes &#8211; See the video below to check out features in the latest version:</p>
<p><iframe src="http://www.youtube.com/embed/diJ_dudKhaY?rel=0" frameborder="0" width="560" height="315"></iframe></p>
<p>Version 2.0 is currently available for:</p>
<ul>
<li>Apple iTunes: <a href="http://itunes.apple.com/us/app/census-browser/id483201717" target="_blank">http://itunes.apple.com/us/app/census-browser/id483201717</a> (powered by <a href="http://www.phonegap.com" target="_blank">phonegap</a>)</li>
<li>Android: <a href="https://play.google.com/store/apps/details?id=com.tricedesigns.CensusBrowser" target="_blank">https://play.google.com/store/apps/details?id=com.tricedesigns.CensusBrowser</a></li>
<li>The Web: <a href="http://tricedesigns.com/census/" target="_blank">http://tricedesigns.com/census/</a>  (modern browsers only)</li>
</ul>
<p>Version 2.0 of the US Census Browser has some substantial changes, including:</p>
<ul>
<li>Completely new &amp; redesigned UI layer, using <a href="http://triceam.github.com/app-UI/" target="_blank">app-UI</a>.  app-UI is an open source framework for application view-navigators that mimic native mobile applications.   Using the app-UI SplitViewNavigator, the US Census Browser now supports both landscape and portrait orientations.</li>
<li>Switched from Google Maps to <a href="http://www.openstreetmap.org/" target="_blank">Open Street Map</a> using <a href="http://openlayers.org/" target="_blank">OpenLayers</a>.  Users of the Census Browser maxed out my Google Maps account!  That is 25,000 map loads within a 24 hour period! WOW! I switched to the free Open Street Maps solution, which doesn&#8217;t have any usage/bandwidth limitations.  With this change I was also able to add interactive maps.</li>
<li>Updated to <a href="http://twitter.github.com/bootstrap/" target="_blank">Twitter Bootstrap 2.0</a>.  The app is now using new UI styles and components which are now available in Twitter Bootstrap version 2.0</li>
</ul>
<p>The source code for the US Census Browser has also been updated on github: <a href="https://github.com/triceam/US-Census-Browser" target="_blank">https://github.com/triceam/US-Census-Browser</a></p>
<p>To learn more about <a href="http://triceam.github.com/app-UI/" target="_blank">app-UI</a>, check out my page here: <a href="http://www.tricedesigns.com/2012/04/24/introducing-app-ui/" target="_blank">http://www.tricedesigns.com/2012/04/24/introducing-app-ui/</a></p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/04/24/us-census-browser-v2-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.828 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-17 18:09:34 -->

