<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace V5 Site Server v5.13.159 (http://www.squarespace.com) on Fri, 24 May 2013 08:02:54 GMT--><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><title>Don Cowan</title><subtitle>Blog</subtitle><id>http://marketimpacts.com/blog/</id><link rel="alternate" type="application/xhtml+xml" href="http://marketimpacts.com/blog/"/><link rel="self" type="application/atom+xml" href="http://marketimpacts.com/blog/atom.xml"/><updated>2012-12-02T20:28:54Z</updated><generator uri="http://five.squarespace.com/" version="Squarespace V5 Site Server v5.13.159 (http://www.squarespace.com)">Squarespace</generator><entry><title>HTML5 vs. Native App Development</title><category term="Android"/><category term="Apps"/><category term="Canvas"/><category term="Devices"/><category term="HTML5"/><category term="Information Age"/><category term="Internet"/><category term="Smartphones"/><category term="Software"/><category term="Tablets"/><category term="Websites"/><category term="Windows"/><category term="iOS"/><id>http://marketimpacts.com/blog/2012/12/2/html5-vs-native-app-development.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/12/2/html5-vs-native-app-development.html"/><author><name>Don Cowan</name></author><published>2012-12-02T19:42:41Z</published><updated>2012-12-02T19:42:41Z</updated><content type="html" xml:lang="en-US"><![CDATA[<div><span class="full-image-float-right ssNonEditable"><span><img src="http://marketimpacts.com/storage/marketimpacts home page 200p.png?__SQUARESPACE_CACHEVERSION=1354480113275" alt="" /></span></span>As you're likely aware, there's a big debate going on about whether HTML5 web sites are a better platform for mobile apps than native code development using Android, iOS and Windows.</div>
<div>&nbsp;</div>
<div></div>
<div></div>
<div></div>
<div>The main selling point for HTML5 is the write-once-run-anywhere advantage. Web browsers on mobile devices can access web sites from any mobile platform. HTML5 is providing features that allow web page JavaScript code to access phone features like devices sensors and geo positioning. In theory, a well constructed HTML5 web page will look and perform like a mobile device native code app.</div>
<div>&nbsp;</div>
<div></div>
<div></div>
<div></div>
<div>However, currently not all device features are available to HTML5 JavaScript code and native code apps have a performance advantage over HTML5 web pages viewed using a browser. Native code apps are presently the dominant choice among developers.</div>
<div>&nbsp;</div>
<div></div>
<div></div>
<div></div>
<div>In HTML5's corner, though, the technology is improving and web browsers are ramping up their implementation of HTML5 features. Life would certainly be simpler for mobile developers if they could develop for only one platform, HTML5, instead of multiple native platforms.</div>
<div>&nbsp;</div>
<div></div>
<div>Longer term, HTML5 will certainly continue to get better. But so will native platforms. In fact, native platforms may improve more rapidly than HTML5. HTML5 is a global standard developed by the <a href="http://www.w3.org/">W3C</a>. It takes years of effort to change the standard and have these changes adopted by the various browsers. The individual native platforms (Android, iOS, Windows) can change as quickly as their developers (Google, Apple and Microsoft) want them to. So will HTML5 ever catch up?</div>
<div>&nbsp;</div>
<div>Maybe not. Google, Apple and Microsoft have lots of developers and big budgets. They want their products to be competitive ... and that means constant improvements.</div>
<div>&nbsp;</div>
<div>So, what's likely to happen? In my opinion, we'll have a blend of the two. In fact, this is taking place today. Native code platforms have Application Programming Interfaces (APIs) that support displaying web pages from within native code apps. Developers can use native code for what it does best and HTML5 web pages for what they do best. The exact mix will shift over time as all the platforms change and improve.&nbsp;</div>
<div>&nbsp;</div>
<div>For developers, this means that separate native code platforms will likely continue to exist. Write-once-run-anywhere will remain an elusive goal probably not realized for a long time, if ever. This doesn't mean that development costs can't be managed or reduced. HTML5 web pages can be developed and used by native code apps where appropriate. Functions specific to those pages can be write-once-run-anywhere. This may not be an optimal solution, but it's the game on the ground.</div>]]></content></entry><entry><title>WebPlatform.org: A Resource for Web Development</title><category term="Android"/><category term="Android Tech Talk"/><category term="Apps"/><category term="Canvas"/><category term="Computing"/><category term="Design"/><category term="Design Patterns"/><category term="HTML5"/><category term="Internet"/><category term="Programming"/><category term="Smartphones"/><category term="Software"/><category term="Standards"/><category term="Websites"/><id>http://marketimpacts.com/blog/2012/10/9/webplatformorg-a-resource-for-web-development.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/10/9/webplatformorg-a-resource-for-web-development.html"/><author><name>Don Cowan</name></author><published>2012-10-10T02:16:53Z</published><updated>2012-10-10T02:16:53Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span>WebPlatform.org is a new organization and collection of websites that will provide open source resources for web development. It will cover topics such as HTML5, Canvas, SVG, Video, Animations, IndexedDB, CSS, WebGL, Transforms, Audio, Media Queries and FileAPI.​</span></p>
<p><span><iframe width="430" height="275" src="http://www.youtube.com/embed/Ug6XAw6hzaw?rel=0" frameborder="0" allowfullscreen></iframe></span></p><p></p>]]></content></entry><entry><title>Bridge Design Pattern</title><category term="Android"/><category term="Android Tech Talk"/><category term="Apps"/><category term="Computing"/><category term="Design"/><category term="Design Patterns"/><category term="Devices"/><category term="Programming"/><category term="Software"/><id>http://marketimpacts.com/blog/2012/10/4/bridge-design-pattern.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/10/4/bridge-design-pattern.html"/><author><name>Don Cowan</name></author><published>2012-10-04T19:57:49Z</published><updated>2012-10-04T19:57:49Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>This entry is part of a series on programming&nbsp;<a href="http://marketimpacts.com/blog/category/design-patterns">Design Patterns</a>&nbsp;that&nbsp;provides a framework for the rapid recall and use of patterns during application design.&nbsp;</p>
<p><span class="full-image-float-right ssNonEditable"><span><img src="http://marketimpacts.com/storage/Bridge2.jpg?__SQUARESPACE_CACHEVERSION=1349381780528" alt="" /></span></span>The Bridge design pattern is used to define multiple processes that work on multiple object types with similar aspects.</p>
<p>To understand how this pattern might be used, consider how software to control a real bridge might be constructed. Such an application would have two processes: trafficControl() and gateControl() which would control two types of objects: cars and boats.&nbsp;</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp;<strong>class Bridge</strong>&nbsp;- contains methods to control bridge activities.</p>
<p><strong>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trafficControl(trafficType)</strong>&nbsp;- method that controls traffic signals.</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<strong>gateControl(trafficType)</strong> - method that controls the bridge gates.</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp;<strong>class Traffic</strong> - contains objects describing types of traffic.</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <strong>cars()</strong> - defines car objects</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <strong>boats()</strong> - defines boat objects</p>]]></content></entry><entry><title>Adapter Design Pattern</title><category term="Android"/><category term="Android Tech Talk"/><category term="Apps"/><category term="Computing"/><category term="Design"/><category term="Design Patterns"/><category term="Devices"/><category term="Programming"/><category term="Software"/><id>http://marketimpacts.com/blog/2012/10/3/adapter-design-pattern.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/10/3/adapter-design-pattern.html"/><author><name>Don Cowan</name></author><published>2012-10-03T17:16:29Z</published><updated>2012-10-03T17:16:29Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>This entry is part of a series on programming <a href="http://marketimpacts.com/blog/category/design-patterns">Design Patterns</a>&nbsp;that&nbsp;provides a framework for the rapid recall and use of patterns during application design.&nbsp;</p>
<p><span class="full-image-float-right ssNonEditable"><span><img src="http://marketimpacts.com/storage/Design Pattern Adapter.jpg?__SQUARESPACE_CACHEVERSION=1349300866430" alt="" /></span></span>The Adapter design pattern is used to wrap a class in code that allows that class to be used via a different interface. Another name for the pattern is a Wrapper.</p>
<p>To understand how this pattern might be used, consider how software to display an image on a fixed size device might be constructed. Assume the following class and method are provided by the standard device software:</p>
<p style="padding-left: 30px;"><strong>class Display</strong> - contains methods to create displays on the device.</p>
<p style="padding-left: 60px;"><strong>displayImage(source)</strong> - method that displays an image with the dimensions of the device screen.</p>
<p>An adapter would fit an image of any size to the device screen:</p>
<p style="padding-left: 30px;"><strong>class DisplayAdapter</strong> - contains methods that fit an image of any size to the device screen.</p>
<p style="padding-left: 60px;"><strong>imageAdapter(original)</strong> - method that changes the size of the original image to fit the display screen.</p>
<p style="padding-left: 90px;"><strong>imageResample(original, resized)</strong> - method that resamples the image for size change.</p>
<p style="padding-left: 90px;"><strong>displayImage(resized)</strong> - uses the method built into the device to display the resized image.</p>]]></content></entry><entry><title>Which is the Best Browser</title><category term="Analytics"/><category term="Canvas"/><category term="Computing"/><category term="Devices"/><category term="HTML5"/><category term="Internet"/><category term="Programming"/><category term="Software"/><category term="Standards"/><category term="Testing"/><category term="Websites"/><id>http://marketimpacts.com/blog/2012/9/26/which-is-the-best-browser.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/9/26/which-is-the-best-browser.html"/><author><name>Don Cowan</name></author><published>2012-09-26T16:57:12Z</published><updated>2012-09-26T16:57:12Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>An <a href="http://internet-browser-review.toptenreviews.com/">analysis of Internet browsers by Top Ten Reviews</a> places Google Chrome at the head of the list. The analysis shows, however, that it's a real horse race between the top five: Chrome, Firefox, Internet Explorer, Opera and Safari.&nbsp;Here are some of my observations based on this analysis and personal tests and experience:</p>
<p><strong>Change after new releases:</strong> All of the browser developers are working hard to improve their products. With each new browser version release, the competitive landscape can change. For example, Internet Explorer had recently lagged in speed due to the lack of graphics hardware acceleration. Based on my tests, they're now the fastest <a href="http://marketimpacts.com/blog/2012/7/14/html5-canvas-performance-test.html">running HTML5 Canvas animations</a>.</p>
<p><strong>Graphics hardware acceleration:</strong> GPU (Graphics Processing Unit) hardware acceleration is an important factor in browser speed. A browser displaying video or animation with GPU acceleration will outperform a browser without it by a factor of 3-4. That's right, 300-400%. A computer using just the CPU to manipulate graphics displays simply can't keep up with one using the combination of CPU and GPU. Hardware acceleration is a fairly complex topic. Basically, the browser offloads calculations from the CPU to the GPU. If you're interesting in some of the details, take a look at this <a href="http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chrome">discussion of hardware acceleration from the Chromium Projects</a>.</p>
<p><strong>Mobile lags desktop:</strong> Especially in speed, the mobile browsers lag desktop versions. Mobile devices simply don't have the computing power to match desktop devices.&nbsp;</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://marketimpacts.com/storage/Browser Screens 425px.jpg?__SQUARESPACE_CACHEVERSION=1348683689034" alt="" /></span></span></p>]]></content></entry><entry><title>HTML5 Status</title><category term="Canvas"/><category term="HTML5"/><category term="Internet"/><category term="Software"/><category term="Standards"/><category term="Websites"/><id>http://marketimpacts.com/blog/2012/9/25/html5-status.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/9/25/html5-status.html"/><author><name>Don Cowan</name></author><published>2012-09-26T02:11:29Z</published><updated>2012-09-26T02:11:29Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>The&nbsp;<a href="http://en.wikipedia.org/wiki/W3c">World Wide Web Consortium (W3C)</a>&nbsp;has&nbsp;<a href="http://dev.w3.org/html5/decision-policy/html5-2014-plan.html">announced</a>&nbsp;that a final recommendation for HTML 5.0 will be released in the 4th quarter of 2014. In spite of the "recommendation" terminology that W3C uses, this is official release of HTML5. This is a big deal and great news. Browser developers will have a firm definition of<span class="full-image-float-right ssNonEditable"><span><img src="http://marketimpacts.com/storage/HTML5%20Logo.png?__SQUARESPACE_CACHEVERSION=1348625697189" alt="" /></span></span>&nbsp;HTML5 they can use to bring their products up to a complete level of support for this latest version of HTML.</p>
<p>W3C has also defined the follow-on version, HTML 5.1, to be released in the 4th quarter of 2016. This release will include features that have been pushed out in order to get release 5.0 completed in 2014. Without this stragegy, W3C was looking at an indefinite specification development timeframe.&nbsp;</p>
<p>Browser developers are not waiting for 2014 to begin implementation of HTML5. You can use&nbsp;<a href="http://www.html5test.com">www.html5test.com</a>&nbsp;to check the status of your browser to see which features are supported and&nbsp;<a href="http://caniuse.com/#search=html5">www.caniuse.com</a>&nbsp;for a summary of the status of support by all the major browsers.</p>]]></content></entry><entry><title>Software Application Re-use</title><category term="Android"/><category term="Apple"/><category term="Apps"/><category term="Computing"/><category term="Design"/><category term="Devices"/><category term="Programming"/><category term="Smartphones"/><category term="Software"/><category term="Tablets"/><id>http://marketimpacts.com/blog/2012/9/25/software-application-re-use.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/9/25/software-application-re-use.html"/><author><name>Don Cowan</name></author><published>2012-09-25T22:06:19Z</published><updated>2012-09-25T22:06:19Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-right ssNonEditable"><span><img src="http://marketimpacts.com/storage/Quickclick Graphic 250px.jpg?__SQUARESPACE_CACHEVERSION=1348613053976" alt="" /></span></span>Software re-use has gained popularity and success due to technologies like Object Oriented Programming. Software classes and methods can be re-used based on their documented parameters and functionality.</p>
<p>The emergence of mobile apps over the last few years offers another level of re-use, that of whole applications. Instead of re-developing the functionality of an app (e.g. Google Maps) the app can be invoked by passing control to the app, providing it with a valid input (e.g. an address.)</p>
<p>Marketimpacts.com developed a series of Android apps based on applicaiton re-use. The <a href="http://marketimpacts.com/quickclick-apps">Quickclick Locale</a> series of apps uses the Google Maps API to map the locations of various types of places such as ATMs, Restaurants and Shops. The value added by Quickclick is an easy to use front end and app icons for different types of places.</p>
<p>To our surprise, there seems to be some resistance from other developers to app re-use. The only negative comments the Quickclick apps have received complain that the app is passing control to Google Maps to do the mapping. &nbsp;Certainly, we could have created our own maps. But why? Are we really smart enough to out-develop Google? Would we really want to scramble to update our apps with new mapping capabilities to match Google? We think not. Google themselves promotes the idea of app re-use.</p>
<p>App re-use has some powerful advantages:</p>
<p><strong>Lowered development costs:</strong> App functionality can be had for the cost of implementing a siimple interface to the app to be re-used.</p>
<p><strong>Automatic upgrades:</strong> When the app you're re-using is upgraded, your app automatically benefits.</p>
<p><strong>Higher quality:</strong> It's unlikely you'll be able to duplicate all the functionality of an existing app focused on a specific niche.</p>
<p><strong>Leverage of user knowledge:</strong> If the app you're re-using is popular, many users will already know how to use it. This is certainly the case with Google Maps.</p>
<p><strong>Access to complete app functionality:</strong> Some apps, including Google Maps, provide only limited functionality via an API (Application Programming Interface). By passing control to and re-using the entire app, your users gain access to full functionality.</p>]]></content></entry><entry><title>Code Comments</title><category term="Computing"/><category term="Design"/><category term="Programming"/><category term="Software"/><category term="Testing"/><category term="code commenting"/><category term="code comments"/><id>http://marketimpacts.com/blog/2012/9/25/code-comments.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/9/25/code-comments.html"/><author><name>Don Cowan</name></author><published>2012-09-25T20:01:27Z</published><updated>2012-09-25T20:01:27Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-right ssNonEditable"><span><img src="http://marketimpacts.com/storage/Art%20of%20Coding%20Sample%20250px.jpg?__SQUARESPACE_CACHEVERSION=1348606103127" alt="" /></span></span>What makes good code comments? Should they be terse or expansive? Should they be frequent or used sparingly? Opinions on these and other aspects of code commenting vary widely. My take is this ... to answer these questions, start with the objectives for code comments:</p>
<p><strong>To assist in development:</strong>&nbsp;Comments aid in understand functionality being implemented in code. For example, they can be used as pseudo-code place holders for eventual real code.</p>
<p><strong>To speed development and maintenance:</strong>&nbsp;Comments allow more rapid digestion of code sections. This is especially important when revisiting code not recently seen or code developed by others.</p>
<p><strong>To clarify code:</strong> The function of a section of even well constructed code may not be evident. Comments can add that critical piece of missing information.</p>
<p>Given these objectives, here are some suggestions:</p>
<p><strong>Comment appropriate groups of code:</strong> Sometimes a single line of code might need explanation. Or there might be a long section of code that repeats similar functionality and a single comment will suffice for the group. It's a judgment call.</p>
<p><strong>Leave signposts for developers:</strong> Even if a section of code can be understood without a comment, how long will it take for you, or someone else, to understand it after time passes? Also, it's sometimes important to be able to understand the flow of a function or application without necessarily understanding all the details. Give yourself and others a break, make understanding as easy as possible. Most code is <em>not</em> a programming quiz.</p>
<p><strong>Clean up comments:</strong> Keep them up to date and free of extraneous information. Remove temporary words used during development. Make them understandable. After all, that's their purpose in life.</p>
<p><strong>Add comments while coding:</strong> It's tempting to think you can go back later and add a comment to some code that looks perfectly clear to you as you write it. Don't do it. Leverage the knowledge you have in that temporary cache in your brain.</p>
<p><strong>Use a fairly uniform comment style:</strong> You don't have to be perfectly uniform, but it's a good idea to used some consistency within an application. It helps with understanding and looks more professional.&nbsp;</p>
<p><strong>Add value to the code being commented:</strong> Don't just repeat what the code obviously tells you. Make the comment compliment and add value to the code.</p>]]></content></entry><entry><title>What is HTML5 Canvas?</title><category term="Apps"/><category term="Canvas"/><category term="Cloud Computing"/><category term="Computing"/><category term="Devices"/><category term="HTML5"/><category term="Information Age"/><category term="Internet"/><category term="Programming"/><category term="Smartphones"/><category term="Software"/><category term="Tablets"/><category term="Websites"/><id>http://marketimpacts.com/blog/2012/9/24/what-is-html5-canvas.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/9/24/what-is-html5-canvas.html"/><author><name>Don Cowan</name></author><published>2012-09-24T17:57:22Z</published><updated>2012-09-24T17:57:22Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-right ssNonEditable"><span><img src="http://marketimpacts.com/storage/HTML5 Logo.png?__SQUARESPACE_CACHEVERSION=1348512279933" alt="" /></span></span>The Canvas feature of HTML5 is one of the most exciting new developments in web based capabilities in many years. Here are some key aspects:</p>
<p><strong>HTML5</strong> - Canvas is a part of the latest revision and improvement of the previous version (HTML4, released in the late 1990's) markup language for displaying web pages on the Internet.</p>
<p><strong>Canvas Tag</strong> - The &lt;canvas&gt; tag joins the other HTML tags (there are around 100 now) as a way to include single or multiple Canvas areas on a web &nbsp;page.&nbsp;</p>
<p><strong>Bit Map Display</strong> - The Canvas area you define with a &lt;canvas&gt; tag is a bit map display. You can manipulate individual pixels to draw objects, images, animations and video.</p>
<p><strong>Javascript Control</strong> - The Javascript language is used to control what is seen on the Canvas. The Javascript application code is placed between the &lt;head&gt;&lt;/head&gt; and &lt;script&gt;&lt;/script&gt; tags of the web page.</p>
<p><strong>Browser Based</strong> - The computing needed to create a Canvas display is done within the browser. In other words, it's client based, not server based. The means that creating a Canvas application is simpler than one requiring server based programming. It also means that the computing power needed to generate the Canvas display is not concentrated in single servers. Each user's browser handles its own work.</p>
<p><strong>Animation</strong> - Canvas applications can generate animations. This is accomplished using callbacks from the browser. The Canvas application designates one of its functions to be called from the browser at specified time intervals. During each of these callbacks, the application draws a new Canvas display, moving objects slightly. When viewed as a continuous flow of Canvas displays, an animation is generated.</p>
<p><strong>Audio/Video</strong> - Audio and video can be incorporated into your Canvas applications. Moving objects can create sounds and video images can be melded into other application objects. This is done without the use of any audio or video plugins.</p>
<p><strong>Gaming</strong> - Game developers have all to tools necessary to create compelling HTML5 Canvas games.</p>
<p><strong>Fun</strong> - Putting aside the technical aspects of Canvas ... it can be described as just plain fun. An HTML5 Canvas is a place where as a developer you can express your creative energies and as a user you can have expanded and enjoyable experiences.</p>
<p>For a more details look at HTML5 Canvas, watch for my upcoming book: <a href="http://www.amazon.com/HTML5-Canvas-Dummies-Computer-Tech/dp/1118385357/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1348519603&amp;sr=1-1&amp;keywords=html5+canvas+for+dummies">HTML5 Canvas for Dummies</a>.</p>]]></content></entry><entry><title>Integrating Audio with HTML5 Canvas</title><id>http://marketimpacts.com/blog/2012/8/9/integrating-audio-with-html5-canvas.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/8/9/integrating-audio-with-html5-canvas.html"/><author><name>Don Cowan</name></author><published>2012-08-09T23:51:36Z</published><updated>2012-08-09T23:51:36Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>One of the useful features of HTML5 Canvas is the ability to integrate audio, either with or without an audio player. <a href="http://marketimpacts.com/storage/fg1001%20ls1001%20Displaying%20an%20Audio%20Player.htm">Click here</a> to see if it works on your browser.</p>]]></content></entry><entry><title>Browser Graphics Improving Rapidly</title><category term="Canvas"/><category term="Computing"/><category term="HTML5"/><category term="Software"/><category term="Websites"/><id>http://marketimpacts.com/blog/2012/7/24/browser-graphics-improving-rapidly.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/7/24/browser-graphics-improving-rapidly.html"/><author><name>Don Cowan</name></author><published>2012-07-24T19:39:06Z</published><updated>2012-07-24T19:39:06Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>As browser support for HTML5 improves and the demand for features such as Canvas increases, browser graphics capabilities are showing great progress. The demo below of DirectX 11 shows how close real time graphics can come to depicting realistic scenes.&nbsp;</p>
<p><iframe width="425" height="275" src="http://www.youtube.com/embed/gbjW57zlVfc?rel=0" frameborder="0" allowfullscreen></iframe></p>]]></content></entry><entry><title>HTML5 Canvas Performance Test</title><category term="Analytics"/><category term="Android"/><category term="Canvas"/><category term="Computing"/><category term="Devices"/><category term="HTML5"/><category term="Internet"/><category term="Smartphones"/><category term="Software"/><category term="Testing"/><category term="Websites"/><id>http://marketimpacts.com/blog/2012/7/14/html5-canvas-performance-test.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/7/14/html5-canvas-performance-test.html"/><author><name>Don Cowan</name></author><published>2012-07-14T16:28:33Z</published><updated>2012-07-14T16:28:33Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Browser support for HTML5 Canvas is constantly improving. More features are being supported and performance is improving. Click <a href="http://marketimpacts.com/storage/Frame%20Rate%20Test.htm">here</a> or on the image below to see how your browser performs. The app rotates a ten layer gradient and displays the Frame Rate.</p>
<p><span class="full-image-block ssNonEditable"><span><a href="http://marketimpacts.com/storage/Frame%20Rate%20Test.htm"><img src="http://marketimpacts.com/storage/Frame%20Rate%20Test%20425px.jpg?__SQUARESPACE_CACHEVERSION=1344199928887" alt="" /></a></span></span></p>]]></content></entry><entry><title>HTML5 Canvas on a Smartphone</title><category term="Android"/><category term="Android Tech Talk"/><category term="Canvas"/><category term="Devices"/><category term="HTML5"/><category term="Programming"/><category term="Smartphones"/><category term="Software"/><category term="Tablets"/><category term="Testing"/><category term="Websites"/><id>http://marketimpacts.com/blog/2012/5/27/html5-canvas-on-a-smartphone.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/5/27/html5-canvas-on-a-smartphone.html"/><author><name>Don Cowan</name></author><published>2012-05-27T17:51:36Z</published><updated>2012-05-27T17:51:36Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>HTML5 Canvas is a highly anticipated feature that allows web developers to create sophisticated graphics on their website pages. Most desktop and laptop browsers now support the Canvas feature. Mobile browsers are catching up. To see if your browser supports Canvas, you can access <a href="http://www.html5test.com">www.html5test.com</a> for an analysis and rating of your browser. &nbsp;Also, give <a href="http://marketimpacts.com/storage/Creating%20Oscillating%20Elliptical%20Motion.htm">this Canvas app</a> a try:</p>
<p><span class="full-image-block ssNonEditable"><span><a href="http://marketimpacts.com/storage/Creating%20Oscillating%20Elliptical%20Motion.htm"><img src="http://marketimpacts.com/storage/HTML5 Canvas Test.jpg?__SQUARESPACE_CACHEVERSION=1338142521471" alt="" /></a></span></span></p>]]></content></entry><entry><title>Smartphone Installations Will Soon Outnumber PCs</title><category term="Android"/><category term="Computing"/><category term="Devices"/><category term="E Commerce"/><category term="Information Age"/><category term="Smartphones"/><id>http://marketimpacts.com/blog/2012/3/31/smartphone-installations-will-soon-outnumber-pcs.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/3/31/smartphone-installations-will-soon-outnumber-pcs.html"/><author><name>Don Cowan</name></author><published>2012-03-31T22:13:08Z</published><updated>2012-03-31T22:13:08Z</updated><content type="html" xml:lang="en-US"><![CDATA[<div></div>
<div></div>
<div>
<p>According to a <a href="http://www.idc.com/getdoc.jsp?containerId=prUS23398412">new study by IDC</a>, smartphone installations will soon outnumber those of PCs. &nbsp;Not surprising, really, but we've lived in a PC dominant world for long enough that the shift seems monumental.</p>
<div style="position: relative;"><iframe src="http://accounts.icharts.net/icharts/embed/M3rbyy9F" height="350" width="425" frameborder="0"></iframe>
<div id="chartdetails109050" class="chartdetails"><span>Chart:        Worldwide Smart Connected Device Shipments,                                2010-2016 (Unit Millions)</span><span>Description: This data comes from IDC's WW Quarterly PC Tracker, WW Quarterly Mobile Phone Tracker, and WW Quarterly Media Tablet and eReader Tracker.</span><span>Tags: Tracker, mobile phones, tablets, forecast, PCs, devices, consumer, IDC ...</span><span>Author: <a href="http://http://www.idc.com">IDC</a></span><span><a href="http://www.icharts.net">charts powered by iCharts</a></span></div>
</div>
<p>&nbsp;</p>
</div>]]></content></entry><entry><title>Managing Android Devices</title><category term="Android"/><category term="Android Tech Talk"/><category term="Computing"/><category term="Design"/><category term="Devices"/><category term="Programming"/><category term="Smartphones"/><category term="Software"/><category term="Tablets"/><id>http://marketimpacts.com/blog/2012/3/12/managing-android-devices.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/3/12/managing-android-devices.html"/><author><name>Don Cowan</name></author><published>2012-03-12T12:49:07Z</published><updated>2012-03-12T12:49:07Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Google has quite a task ... to manage an installed base of over a thousand different types of Android devices. Multiple sizes, shapes, features, etc. The positive way to describe this is variety. On the other hand, it has also been refered to as <a href="http://marketimpacts.com/blog/2012/2/18/dealing-with-android-fragmentation.html">fragmentation</a>.</p>
<p><span class="full-image-float-right ssNonEditable"><span><img src="http://marketimpacts.com/storage/Shovel 175px.jpg?__SQUARESPACE_CACHEVERSION=1331558957281" alt="" /></span></span>So how do they do it? In short, leverage. A good metaphor is a mechanical shovel. Relatively compact machines can move and lift very heavy objects using a system of joints and lever articulation. Android does something similar.</p>
<p>The code in Android applications doesn't manipulate devices directly. There are intermediate joints and levers that make the task manageable. Application code is programmed using component names to refer to layout elements. Layouts are adjusted to device characteristics automatically by the Android operating system. This lets an individual line of code manipulate many different types of devices.</p>
<p>This is a simplified view of how it all happens. There are a number of Android features that make it work: Themes, Styles, Action Bars, Fragments, Resources and much more. When implemented properly, an Android application can move a thousand different types of devices.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://marketimpacts.com/storage/Android Articulation System 425px.jpg?__SQUARESPACE_CACHEVERSION=1331556976991" alt="" /></span></span></p>]]></content></entry><entry><title>Coding for Better Understanding</title><category term="Android"/><category term="Android Tech Talk"/><category term="Apps"/><category term="Computing"/><category term="Design"/><category term="Programming"/><category term="Software"/><id>http://marketimpacts.com/blog/2012/2/25/coding-for-better-understanding.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/2/25/coding-for-better-understanding.html"/><author><name>Don Cowan</name></author><published>2012-02-25T23:04:56Z</published><updated>2012-02-25T23:04:56Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-right ssNonEditable"><span><img src="http://marketimpacts.com/storage/Art of Coding Sample 250px.jpg?__SQUARESPACE_CACHEVERSION=1330212628597" alt="" /></span></span>A recent article in the <a href="http://cacm.acm.org/">Communications of the ACM</a> focuses on how to improve the understandability of code. "<a href="http://delivery.acm.org/10.1145/2050000/2043191/p57-green.pdf?ip=75.208.71.18&amp;acc=OPEN&amp;CFID=86868705&amp;CFTOKEN=37674413&amp;__acm__=1330211290_be8b9e3896702628db6ddade3b7cd1a3">Coding Guidelines: Finding the Art in the Science</a>" by Robert Green and Henry Ledgard addresses a number of often overlooked aspects of code design, including:</p>
<ul>
<li>Statement alignment.</li>
<li>Component naming.</li>
<li>The use of white space.</li>
<li>Syntax highlighting.</li>
</ul>
<p>Many developers feel that work done to improve the appearance and understandabililty of code is wasted effort. They will often work to make code as compact and sometimes as obscure as possible.</p>
<p>This might work well for them while the function of the code is recently developed in their own head. But someone, even themselves, trying to maintain or improve the code sometime in the future would likely find it very difficult to understand.</p>
<p>Using principles such as those above can, over the long run, decrease development costs and improve code performance.</p>]]></content></entry><entry><title>Dealing with Android Fragmentation</title><category term="Android"/><category term="Android Tech Talk"/><category term="Apps"/><category term="Design"/><category term="Devices"/><category term="Programming"/><category term="Smartphones"/><category term="Software"/><category term="Tablets"/><id>http://marketimpacts.com/blog/2012/2/18/dealing-with-android-fragmentation.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/2/18/dealing-with-android-fragmentation.html"/><author><name>Don Cowan</name></author><published>2012-02-18T21:49:38Z</published><updated>2012-02-18T21:49:38Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-right ssNonEditable"><span><img src="http://marketimpacts.com/storage/Multiple Android Devices 250px.jpg?__SQUARESPACE_CACHEVERSION=1329674741225" alt="" /></span></span>So called Android fragmentation is caused by the large number of Android device types and operating system versions deployed in the market. &nbsp;It's the flip side to the benefit of having a <strong>wide variety Android devices and capabilities</strong>.</p>
<p>There are currently <strong>over a thousand different types of Android devices</strong> on the market. It's simply not possible to support all of these without accomodating variations in device design.</p>
<p>Google provides a number of<strong> tools for addressing the compatibility necessary</strong> to serve this diverse universe of devices. These include:</p>
<p><a href="http://developer.android.com/guide/practices/tablets-and-handsets.html">Unified Support for Tablets and Handsets</a></p>
<p>Android 4.0 combines the support of tablets and handsets into a single release.</p>
<p><a href="http://android-developers.blogspot.com/2012/01/holo-everywhere.html">The Holo Theme Family</a></p>
<p><span>In Android 4.0 Google has made the inclusion of the unmodified Holo theme family a compatibility requirement for devices running Android 4.0 and forward. This will provide a level of uniformity across device implementations.</span></p>
<p><a href="http://developer.android.com/guide/practices/screens_support.html">Support for Multiple Screens</a></p>
<p>Provides mechanisms for supporting multiple screen sizes and densities.</p>
<p><a href="http://marketimpacts.com/blog/2012/2/6/android-action-bar-backward-compatibility.html">Action Bar Backward Compatibility</a></p>
<p><span>Google has recently developed a&nbsp;</span><a href="http://developer.android.com/resources/samples/ActionBarCompat/index.html">set of classes to give the Action Bar backward compatibility</a><span>&nbsp;for pre Android 3.0 devices. &nbsp;These classes invoke the action bar design pattern on pre-API 11 devices and&nbsp;the built-in Action Bar on devices supporting API 11 or greater.</span></p>
<p><a href="http://source.android.com/compatibility/index.html">Android Compatibility P</a><a href="http://source.android.com/compatibility/index.html">ackage</a></p>
<p><span>This library is available through the&nbsp;</span><a href="http://developer.android.com/sdk/adding-components.html">SDK Updater</a>. It gives backward compatibility for the new Fragments feature.</p>
<p><a href="http://developer.android.com/guide/practices/compatibility.html">Compatibility Guidelines</a></p>
<p>Google provides guidelines on achieving compatibility across devices.</p>]]></content></entry><entry><title>Android Action Bar Backward Compatibility</title><category term="Android"/><category term="Android Tech Talk"/><category term="Apps"/><category term="Design"/><category term="Devices"/><category term="Programming"/><category term="Smartphones"/><category term="Software"/><category term="Tablets"/><id>http://marketimpacts.com/blog/2012/2/6/android-action-bar-backward-compatibility.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/2/6/android-action-bar-backward-compatibility.html"/><author><name>Don Cowan</name></author><published>2012-02-06T21:56:20Z</published><updated>2012-02-06T21:56:20Z</updated><content type="html" xml:lang="en-US"><![CDATA[<div id="_mcePaste"><span class="full-image-float-right ssNonEditable"><span><img src="http://marketimpacts.com/storage/Android Action Bar Stacked.png?__SQUARESPACE_CACHEVERSION=1328566505445" alt="" /></span></span>The <a href="http://developer.android.com/design/patterns/actionbar.html">Action Bar</a> is a consistently formatted navigation and option selection area&nbsp;at the top of a screen with an overflow area at the bottom.</div>
<div>&nbsp;</div>
<div id="_mcePaste"></div>
<div>Key aspects of the Action Bar include:</div>
<div id="_mcePaste">
<ul>
<li>It's a replacement for the menu feature.</li>
<li>It was introduced in Android 3.0 and refined in Android 4.0.</li>
<li>It's included in activities that use the Holo theme family.</li>
</ul>
</div>
<p>Elements of the Action Bar graphic include:</p>
<ul>
<li>Application icon.</li>
<li>Application name.</li>
<li>Up navigation to a parent screen.</li>
<li>Built-in tab navigation for switching between fragments.</li>
<li>Drop-down list for alternative navigation such as sort&nbsp;by a different criteria.</li>
<li>Important actions for a given app such as search and share.</li>
</ul>
<p>Google has recently developed a <a href="http://developer.android.com/resources/samples/ActionBarCompat/index.html">set of classes to give the Action Bar backward compatibility</a> for pre Android 3.0 devices. &nbsp;These classes invoke the action bar design pattern on pre-API 11 devices and&nbsp;the built-in Action Bar on devices supporting API 11 or greater.</p>
<p>This is part of a larger set of capabilities for supporting application <a href="http://developer.android.com/guide/practices/compatibility.html">compatibility</a> with multiple device environments including <a href="http://developer.android.com/guide/practices/tablets-and-handsets.html">tablets and handsets</a> and various <a href="http://developer.android.com/guide/practices/screens_support.html">screen sizes</a>.</p>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div><p></p>]]></content></entry><entry><title>New Android Design Guidelines</title><category term="Android"/><category term="Android Tech Talk"/><category term="Design"/><category term="Devices"/><category term="Information Age"/><category term="Smartphones"/><category term="Software"/><category term="Tablets"/><id>http://marketimpacts.com/blog/2012/1/19/new-android-design-guidelines.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2012/1/19/new-android-design-guidelines.html"/><author><name>Don Cowan</name></author><published>2012-01-19T21:39:04Z</published><updated>2012-01-19T21:39:04Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Google has just released new, and very helpful, Android design guidelines. They're detailed on the <a href="http://developer.android.com/design/index.html">Android developer website</a>. The main webpage is shown below.</p>
<p>It's great to have these guidelines grouped in one place for easy access and they appear to be a step forward in developing an <strong>improved user experience</strong> ... both for the <strong>operating system</strong> and <strong>applications.</strong></p>
<p><span class="full-image-block ssNonEditable"><span><a href="http://developer.android.com/design/index.html"><img src="http://marketimpacts.com/storage/Android%20Design%20425px.jpg?__SQUARESPACE_CACHEVERSION=1327009852400" alt="" /></a></span></span></p>
<p><span class="full-image-block ssNonEditable"><span>&nbsp;</span></span></p>]]></content></entry><entry><title>Using JavaScript, jQuery and HTML5 with Cloud-Based Web Development Tools</title><category term="Computing"/><category term="Design"/><category term="Internet"/><category term="Programming"/><category term="Software"/><category term="Websites"/><id>http://marketimpacts.com/blog/2011/12/29/using-javascript-jquery-and-html5-with-cloud-based-web-devel.html</id><link rel="alternate" type="text/html" href="http://marketimpacts.com/blog/2011/12/29/using-javascript-jquery-and-html5-with-cloud-based-web-devel.html"/><author><name>Don Cowan</name></author><published>2011-12-29T15:44:25Z</published><updated>2011-12-29T15:44:25Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Cloud based web development tools (such as <a href="http://www.squarespace.com/">Squarespace</a>) are making web development easier. Their <a href="http://en.wikipedia.org/wiki/WYSIWYG">WYSIWYG</a> editors even make simple web update accessible to non technical users. Web developers can concentrate on the more complicated, higher value added tasks, while their clients make simpler updates such as text changes and blogging.</p>
<p>By adding <a href="http://en.wikipedia.org/wiki/Javascript">JavaScript</a>, <a href="http://en.wikipedia.org/wiki/Jquery">jQuery</a> and <a href="http://en.wikipedia.org/wiki/Html5">HTML5</a> to the mix, sophisticated, cost effective websites can be developed.&nbsp;</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://marketimpacts.com/storage/Squarespace Editor 425px.jpg?__SQUARESPACE_CACHEVERSION=1325174081465" alt="" /></span></span></p>]]></content></entry></feed>