<?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"
	>
<channel>
	<title>Molecular Voices &#187; Technology</title>
	<atom:link href="http://molecularvoices.molecular.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://molecularvoices.molecular.com</link>
	<description>where conversation and digital minds meet</description>
	<pubDate>Mon, 17 Nov 2008 23:20:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Azure skies bring uncertain forecasts for SAAS providers (Microsoft Cloud Computing)</title>
		<link>http://molecularvoices.molecular.com/2008/azure-skies-bring-uncertain-forecasts-for-saas-providers-microsoft-cloud-computing/</link>
		<comments>http://molecularvoices.molecular.com/2008/azure-skies-bring-uncertain-forecasts-for-saas-providers-microsoft-cloud-computing/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 14:11:08 +0000</pubDate>
		<dc:creator>Emile Daigle</dc:creator>
		
		<category><![CDATA[Digital Strategy]]></category>

		<category><![CDATA[Industry Trends]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=1211</guid>
		<description><![CDATA[
Earlier this morning, Microsoft unveiled Azure, their foray into the burgeoning cloud computing industry.  This, coming days after the announcement of Rackspace&#8217;s acquisition of virtual private server provider Slicehost (Disclosure: I&#8217;m a happy Slicehost customer) and online storage provider Jungledisk, means there will soon be some big league competition for the incumbent Amazon&#8217;s Elastic Compute Cloud (EC2) [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:31d21c82aa654f8815bf77aa833226f050edfabb'><p><img class="alignright" style="float: right;" title="Bowl of clouds" src="http://farm4.static.flickr.com/3272/2511369048_c17a1fb442.jpg?v=0" alt="" width="155" height="180" /></p>
<p>Earlier this morning, <a href="http://www.microsoft.com/" target="_blank">Microsoft</a> unveiled <a href="http://technology.newscientist.com/channel/tech/dn15053-microsoft-announces-windows-in-the-cloud.html" target="_blank">Azure</a>, their foray into the burgeoning <a href="http://en.wikipedia.org/wiki/Cloud_computing" target="_blank">cloud computing</a> industry.  This, coming days after the announcement of <a href="http://www.rackspace.com/index.php" target="_blank">Rackspace</a>&#8217;s acquisition of <a href="http://en.wikipedia.org/wiki/Virtual_private_server" target="_blank">virtual private server</a> provider <a href="http://www.slicehost.com/" target="_blank">Slicehost</a> (Disclosure: I&#8217;m a happy Slicehost customer) and online storage provider <a href="http://www.jungledisk.com/" target="_blank">Jungledisk</a>, means there will soon be some big league competition for the incumbent <a href="http://www.amazon.com/" target="_blank">Amazon</a>&#8217;s <a href="http://aws.amazon.com/ec2/" target="_blank">Elastic Compute Cloud</a> (EC2) and <a href="http://aws.amazon.com/s3/" target="_blank">Simple Storage Service</a> (S3) for the estimated $42 BN this market will grow to by 2012.</p>
<p>This trend toward more affordable big-league server capacity for companies is a boon to start-ups and small companies who can&#8217;t finagle the cost of building and running their own server farms, but at the same time <a href="http://www.channelinsider.com/c/a/Solution-Builder/Microsoft-Cloud-Tops-Biggest-Threat-to-Managed-Services-Solution-Builders/" target="_blank">bodes poorly</a> for those companies currently operating under the <a href="http://en.wikipedia.org/wiki/Software_as_a_service" target="_blank">Software as a Service</a> (SaaS) / <a href="http://en.wikipedia.org/wiki/Application_service_provider" target="_blank">Application Service Provider</a> (ASP) model. These services we all know and love were, and still are in some circumstances, ideal for keeping technical infrastructure out of the way of creating complex solutions to elegantly address the business needs of all sized interests.</p>
<p> </p>
<p><span id="more-1211"></span>The biggest caveat (or best feature, depending on what side of the desk you&#8217;re sitting at) with the SaaS/ASP model was the overhead they introduced to terminating your contract; when all your eggs are in someone else&#8217;s basket, they&#8217;ve got some leverage when you need those eggs somewhere else. This new-ish wave of cloud computing (I love buzz words) has effectively established a middle ground: you can own your data without owning your hardware, albeit introducing a need for technical staff to pull all the cords and levers to get your blimp off the ground. </p>
<p>What does this mean for agencies like Molecular? We fill that need for expertise in getting our clients&#8217; dreams into the skies, and with a new slew of infrastructural options to build upon, we&#8217;re able to provide more choices and, ideally, better-fitting options to our clients, and to stay in the picture to meet their needs and steer their business forward as their enterprise floats in the cloud.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/azure-skies-bring-uncertain-forecasts-for-saas-providers-microsoft-cloud-computing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Optimize your webpages with YSlow</title>
		<link>http://molecularvoices.molecular.com/2008/quickly-analyze-your-page-performance/</link>
		<comments>http://molecularvoices.molecular.com/2008/quickly-analyze-your-page-performance/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 21:19:18 +0000</pubDate>
		<dc:creator>Arra Derderian</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[addons]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[performance]]></category>

		<category><![CDATA[yahoo!]]></category>

		<category><![CDATA[yslow]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=1129</guid>
		<description><![CDATA[Often times in the fight to develop web pages quickly we forget how important it is to make sure our page is optimized to the best of your ability.  Simple things like placing CSS and Javascript files externally are an easy and well known example of page optimization but many times we can do more. [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:a47a472081a17c306e5077b2e769642adbcb63e2'><p>Often times in the fight to develop web pages quickly we forget how important it is to make sure our page is optimized to the best of your ability.  Simple things like placing CSS and Javascript files externally are an easy and well known example of page optimization but many times we can do more. <a href="http://www.yahoo.com">Yahoo!</a> has provided a set of recommendations on their site called <a href="http://developer.yahoo.com/performance/rules.html">Best Practices for Speeding up your Website.</a> This list spans all areas of a page that can be tweaked with to minimize page size and loading time.   Now many of these recommendations have their downsides as well but overall I found some good ideas on improving my web page performance.</p>
<p>The obvious question now is how do I make sure I am complying to all these best practices while I am developing.  Well luckily <a href="http://www.yahoo.com">Yahoo!</a> has provided a very well integrated addon for Mozilla Firefox called <a href="https://addons.mozilla.org/en-US/firefox/addon/5369">YSlow</a>.  YSlow provides automatic feedback in your browser status bar for every page you load.  It gives a performance grade (very strict) on each page along with the page size and load time.  I find this very helpful while developing so I can quickly glance at these stats every time my page loads.  <a href="https://addons.mozilla.org/en-US/firefox/addon/5369">YSlow</a> also provides a detailed list of every HTTP request made when loading the page. This is nice so you can see how long it takes to download certain images or script files.  Improvements can then be made to cache those large images if they tend not to change often or with a script maybe minify it before deploying it.  Lastly this addon provides a nice way to view overall stats of the page including images, css, and JS downloaded.</p>
<p><a href="https://molecularvoices.molecular.com/wp-content/uploads/2008/10/cache.bmp"><img class="alignnone size-medium wp-image-1130" title="Web Stats" src="https://molecularvoices.molecular.com/wp-content/uploads/2008/10/cache.bmp" alt="YSlow Web Page Stats Window" /></a></p>
<p>Next time you go searching for Firefox addons be sure to pick this one up!</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/quickly-analyze-your-page-performance/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Last Night, noConflict Saved the Project</title>
		<link>http://molecularvoices.molecular.com/2008/last-night-noconflict-saved-the-project/</link>
		<comments>http://molecularvoices.molecular.com/2008/last-night-noconflict-saved-the-project/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 21:31:33 +0000</pubDate>
		<dc:creator>Nick Cooley</dc:creator>
		
		<category><![CDATA[Experience Design]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=1045</guid>
		<description><![CDATA[or
&#8220;jQuery&#8217;s noConflict in Action&#8221;
As Interactive Developers, we all have our preferred javascript frameworks to aid our quest in building rich, interactive sites.  Some popular (and cost-free) frameworks out now include Prototype, MooTools, and YUI, but emerging as a leader in this space is jQuery, the &#8220;write less, do more&#8221; framework (as it&#8217;s been dubbed&#8230;)  These [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:31abf19761f51192cd73f6b880338d6b2f4e21b5'><p>or</p>
<h2>&#8220;jQuery&#8217;s noConflict in Action&#8221;</h2>
<p>As Interactive Developers, we all have our preferred javascript frameworks to aid our quest in building rich, interactive sites.  Some popular (and cost-free) frameworks out now include <a title="Prototype JS Library" href="http://http://www.prototypejs.org/" target="_blank">Prototype</a>, <a title="mooTools" href="http://www.mootools.net/" target="_blank">MooTools</a>, and <a title="YUI" href="http://developer.yahoo.com/yui/" target="_blank">YUI</a>, but emerging as a leader in this space is <a title="jQuery" href="http://www.jquery.com" target="_blank">jQuery</a>, the &#8220;write less, do more&#8221; framework (as it&#8217;s been dubbed&#8230;)  These frameworks allow us to focus on the actual quality of interaction rather than spending time (and our clients&#8217; money) writing widgets like sliders, accordions and drag-and-drop from scratch.  A common best practice is to use only one framework per page, but what happens when you absolutely, positively *must* use two frameworks on the same page?  What happens when the libraries you choose have numerous conflicts in their namespaces?   Molecular interface developers were recently tasked with overcoming this obstacle for a client and we found that jQuery had the easiest and most complete implementation of conflict evasion between javascript libraries.   I explain after the break:<span id="more-1045"></span></p>
<p>Recently, Molecular was tasked with creating an interactive wrapper (header, menus, footer) for a global company which hosted hundreds of companion microsites around which this new wrapper framework would live.  The catch &#8212; these microsites were created by agencies around the world who were free to use whatever javascript libraries they chose. To save time and budget on the project, we already knew that we would need to utilize a library, the question was &#8216;which one?&#8217;  Conventional wisdom was that with hundreds of agency-developed microsites out there, two or more would certainly be using a library different than whatever library we chose.  Additionally, we didn&#8217;t want any of the agencies to be forced to change any javascript code that had previously been verified bug-free by numerous QA processes. One danger to these objectives was that some libraries such as Prototype, mooTools and jQuery all use a selector shortcut called &#8216;<a title="explanation of $ in jQuery" href="http://docs.jquery.com/Core/jQuery#expressioncontext" target="_blank">$</a>&#8216;.  If we chose one of these libraries, how would we be able to avoid such namespace collisions?   What would happen if one of these microsites was using a previous version of the *same* library?</p>
<p>Thankfully, jQuery&#8217;s core framework contains the ability to avoid any namespace collisions with other libraries via its <a title="jQuery's noConflict method" href="http://docs.jquery.com/Core/jQuery.noConflict" target="_blank">noConflict</a> method.   This would turn out to be another reason we chose jQuery as the framework for this navigation wrapper.  Not only could we seamlessly integrate with sites leveraging other libraries, we could also allow agencies to keep using earlier versions of jQuery without modifying their code at all.  Below are examples in how we tackled each scenario:</p>
<h4>Scenario 1: Integrating with a conflicting library (not a different version of jQuery)</h4>
<p>Here, we call the basic &#8216;noConflict&#8217; method which removes jQuery&#8217;s &#8216;$&#8217; alias from scope and leaves any selection work to the original &#8220;jQuery&#8221; function.  At this point, any conflicting methods (like &#8216;$&#8217;) are relegated to the non-jQuery library.  Note: Here, it doesn&#8217;t matter in what order the libraries are introduced into the page.</p>
<p>Step 1: Call jQuery (Note: script tags don&#8217;t contain &#8220;type&#8221; or &#8220;language&#8221; attributes for space reasons&#8230;)<br />
<code><br />
&lt;script ... src="js/jquery-1.2.6.js" &gt;&lt;/script&gt;<br />
</code><br />
Step 2: Call your non-jQuery library (Note: script tags don&#8217;t contain &#8220;type&#8221; or &#8220;language&#8221; attributes for space reasons&#8230;<br />
<code><br />
&lt;script ... src="js/otherlibrary.js" &gt;&lt;/script&gt;</code></p>
<p>Step 3: set jQuery to noConflict mode.<br />
<code><br />
jQuery.noConflict();<br />
</code><br />
Step 4: Now, any time you utilize a conflicting method, it will be call via the non-jQuery library.   Now to call a jQuery method, use the jQuery namespace.<br />
<code><br />
$(selector).dosomething(); //not jQuery<br />
jQuery(selector).dosomething(); //this is jQuery<br />
</code><br />
Step 4a: You also have the option to encapsulate functions using the &#8220;$&#8221; command in self-executing functions like the one below:<br />
<code><br />
(function($) {<br />
$(function() {<br />
$(selector).dosomething(); //this is jQuery<br />
});<br />
})(jQuery)</code></p>
<p>$(selector).dosomething(); //this is the other library</p>
<h4>Scenario 2: Integrating with a different version of jQuery</h4>
<p>In this instance, we call the &#8216;extreme&#8217; version of noConflict which requires the developer to create an alias for their version of jQuery and assign it the value of noConflict.  This scenario would resolve BOTH challenges. An important point here is that if you are attempting to use any jQuery plugins with a version of jQuery set to &#8220;noConflict&#8221; mode, any plugins you intend to use should be updated as well (you&#8217;ll need to change any references to &#8220;jQuery&#8221; or &#8220;$&#8221; to the alias you create.)    Note: Here, it *does* matter in what order the libraries are introduced into the page.  YOUR jQuery must must be declaired and aliased before making a reference to the other library.</p>
<p>Step 1: Call jQuery (Note: script tags don&#8217;t contain &#8220;type&#8221; or &#8220;language&#8221; attributes for space reasons&#8230;)<br />
<code><br />
&lt;script ... src="js/jquery-1.2.6.js" &gt;&lt;/script&gt;<br />
</code></p>
<p>Step 2: Create a new object and assign it the noConflict method (with a parameter of the boolean &#8220;true&#8221;)<br />
<code><br />
var $jQ= {};<br />
$jQ = jQuery.noConflict(true);<br />
</code></p>
<p>Step 3: Call your other library. Again, this must come *after* the jQuery.js has been referenced and set to noConflict mode.<br />
<code>&lt;script ... src="js/jquery-1.2.1.js" &gt;&lt;/script&gt;<br />
</code></p>
<p>Step 4: At this point, to call a jQuery method, you will use your new alias.   To call your other library (or different version of jQuery), continue to use &#8220;$&#8221; or &#8220;jQuery&#8221;<br />
<code><br />
$jQ(selector).dosomething(); //your "noConflict" jQuery method<br />
$(selector).dosomething();//your other library's method<br />
</code></p>
<p>Following these easy steps will allow you to overcome any library namespace collisions.  For more information on this topic, check out the <a href="http://docs.jquery.com/Core/jQuery.noConflict" target="_blank">jQuery documentation on noConflict()</a> or this <a href="http://docs.jquery.com/Using_jQuery_with_Other_Libraries" target="_blank">tutorial</a>.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/last-night-noconflict-saved-the-project/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Appcelerator: RIA Made (pretty) Easy</title>
		<link>http://molecularvoices.molecular.com/2008/appcelerator-ria-made-pretty-easy/</link>
		<comments>http://molecularvoices.molecular.com/2008/appcelerator-ria-made-pretty-easy/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 01:46:44 +0000</pubDate>
		<dc:creator>David Palmer</dc:creator>
		
		<category><![CDATA[Experience Design]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=1012</guid>
		<description><![CDATA[We (that is, &#8220;we&#8221; developers) all have our favorite secret weapons when it comes to making the complicated (read: RIA) applications seem easy, stuff like JQuery, YUI, Flex, mootools (hahaha, funny right?) Flash, ZK, Openlazlo, etc. But allow me to introduce a new discovery, Appcelerator.
What is it? Well, its not just a collection of javascripts [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:cd79e2384981b08c01e45207a7fdd72e3ac00203'><p>We (that is, &#8220;we&#8221; developers) all have our favorite secret weapons when it comes to making the complicated (read: RIA) applications seem easy, stuff like <a href="http://jquery.com">JQuery</a>, <a href="http://developer.yahoo.com/yui/">YUI</a>, <a href="http://www.adobe.com/products/flex/">Flex</a>, mootools (hahaha, funny right?) Flash, <a href="http://www.zkoss.org/">ZK</a>, <a href="http://www.openlaszlo.org/">Openlazlo</a>, etc. But allow me to introduce a new discovery, <a href="http://www.appcelerator.org">Appcelerator</a>.</p>
<p>What is it? Well, its not just a collection of javascripts and CSS snippets, its more like a fully integrated development platform with its own (very ant-like) build system and (perl-like) updating system. Appcelerator, an open source (using the more friendly, flexible and down-to-earth license of Apache) system provides developers (not so much designers) with tools to make RIA applications less of a chore.</p>
<p><span id="more-1012"></span></p>
<p>How it works is that Appcelerator&#8217;s SDK basically &#8220;compiles&#8221; a series of templates (HTML/CSS) and Java code and creates all the appropriate JavaScripts, and a WAR file. Using a message-oriented-architecture all communications between the front-end and back end occurs through discreet &#8220;messages&#8221; which are just serialized chunks of JSON. Appcelerator handles all of the marshaling/unmarshaling for you so your only concern is making the individual pieces of functionality.</p>
<p>Integration is what appears to be Appcelerator&#8217;s real strong point. With the ability to fit in nicely with a Java application, it&#8217;ll be more than happy to be in your Perl, PHP, Ruby, or Python application, as well as your Google Gears application as well. With a full suite of widgets and plugins most common pieces are probably already built for you&#8230; um, so you don&#8217;t have to!</p>
<p>The magic of Appcelerator happens by a dynamic HTML scripting-like language where the developer simply assigns IDs to HTML elements and an &#8220;<code>on</code>&#8221; attribute which defines (for Appcelerator) the action to perform:</p>
<p><code>&lt;div id="my_comment" on="r:app.my.package.response then effect[fade]&#8220;&gt;&lt;/div&gt;</code></p>
<p>What that basically says is when the id &#8220;<code>my_comment</code>&#8221; receives a response (<code>r</code>) of <code>app.my.package.response</code> then it will fade in the value.</p>
<p>Pretty cool huh? Yes, its way more sophisticated than just this ridiculously simple example, but the idea is that everything is done through a very human-readable scripting syntax and all of the heavy lifting and tedious code of calling the server, marshaling the objects and dealing with the output is done for you.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/appcelerator-ria-made-pretty-easy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Evolution of In-Vehicle Multimedia, Informational, and Entertainment Systems</title>
		<link>http://molecularvoices.molecular.com/2008/evolution-of-in-vehicle-multimedia-informational-and-entertainment-systems/</link>
		<comments>http://molecularvoices.molecular.com/2008/evolution-of-in-vehicle-multimedia-informational-and-entertainment-systems/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 00:36:44 +0000</pubDate>
		<dc:creator>Kevin Tu</dc:creator>
		
		<category><![CDATA[Experience Design]]></category>

		<category><![CDATA[Industry Trends]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[automotive]]></category>

		<category><![CDATA[Cars]]></category>

		<category><![CDATA[displays]]></category>

		<category><![CDATA[entertainment]]></category>

		<category><![CDATA[information]]></category>

		<category><![CDATA[interface design]]></category>

		<category><![CDATA[multimedia]]></category>

		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=947</guid>
		<description><![CDATA[In-vehicle multimedia, informational, and entertainment systems have evolved significantly in the past decade. Before the last decade, in-car entertainment was considered advanced if the car included in-dash multi-disc CD changers. However, since the introduction of the first generally available in-car navigation systems in the 1990s, manufacturers and vendors have gradually started to realize the potential [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:0fe6bd2ab1b231fbd0bff1c7312dacf3919ee355'><p class="MsoNormal">In-vehicle multimedia, informational, and entertainment systems have evolved significantly in the past decade. Before the last decade, in-car entertainment was considered advanced if the car included in-dash multi-disc CD changers. However, since the introduction of the first generally available in-car navigation systems in the 1990s, manufacturers and vendors have gradually started to realize the potential in this area. Cars now come with a lot more advanced informational and entertainment systems, most with significantly sized display screens. The evolution of vehicle design in this department provides us with a glimpse of the trends to come and emphasize the importance of designing usability into in-vehicle displays and controls.</p>
<p class="MsoNormal">One of the first changes in car displays came with the introduction of larger screen multi-information screens. These displays initially started off monochromatic, and housed data from the on-board computer, climate control, and audio systems. The general idea was to centralize information display in a vehicle to reduce driver distraction. Thus, the screens were often mounted in a prominent location on the dashboard close to drivers’ line of vision. With time, multi-information displays grew in complexity, functionality, and display quality. BMW introduced their new iDrive system in 2001, which relied on a 10 inch color display screen housing entertainment, navigation, communications, climate, and car settings. Audi and Mercedes soon followed suit.<span> </span>Data types also varied, ranging from display-only text, editable fields, text fields, diagrams for navigation maps and for backup sensors, to videos for entertainment, rearview, or surround view features.<span> </span>The increased amount and types of information being presented meant deeper menu structures and more intricate information architecture. What started off as a consolidated display for basic vehicle information had essentially evolved into a mini on-board “Web site.”</p>
<p class="MsoNormal"><span id="more-947"></span></p>
<p class="MsoNormal">Following the integration of larger color displays in cars and the advancement in multimedia and entertainment features, designers saw the opportunity to levitate in-car entertainment to the next level. Chrysler introduced built in hard drives that allowed owners to store and playback photos, music files, and videos. Users could even download pictures from their cameras onto the hard drive on the go. Chrysler also announced the arrival of uConnect Web, which offers Wi-Fi technology in their vehicles and allows passengers with Wi-Fi enabled mobile devices to connect to the Internet. Other manufacturers have once again followed suit in this area. Just recently, BMW and Mercedes launched in-car Internet connection and Web browsing in Europe. Owners are now able to use the in-vehicle multi-information display screen and integrated control interface to browse the Internet, email, and even purchase items or make hotel reservations from the car! While this technology has not yet launched in the US market, this heralds an entirely new generation of in-car informational and entertainment systems.</p>
<p class="MsoNormal">So what exactly does all this mean for the future of in-car multimedia, informational, and entertainment systems? All signs seem to point in the direction of a narrowing feature gap between in-car systems, mobile devices, and home PCs. In the very near future, expect growing availability of more advanced multimedia and navigation systems as these technologies trickle down from more expensive cars to more affordable models. Some of you may already have integrated hard drives that store photos and videos, or navigation systems that leverage real time traffic and weather information. Honda’s navigation systems in Japan also leverage up-to-date crime rate data in providing routing guidance. Farther out, expect wider spread availability of mobile Web browsing in cars. Web access could also be better integrated into the car’s systems, such as searching on <em>Yelp</em> for a recommended restaurant and navigating there or using the Web to diagnose an engine error code. In addition, the availability of Internet connection in vehicles sets a great foundation for the maturation of an advanced communications network between individual vehicles. A good example of where this might be beneficial is the ability for a car ahead to notify cars behind of potentially slick conditions or even an accident. A communications network like such would go great lengths in improving situational awareness for drivers.</p>
<p class="MsoNormal">From an interface design perspective, this advancing trend definitely opens doors for opportunities to design creative and innovative interactive experiences with car displays and controls. Think customizing Google driving routes via drag-and-drop on your car’s touch screen navigation system (which Volkswagen and Google are reportedly working on), an iPhone-esque interaction method, or a point and drag schema first seen on “Minority Report.” While all of these developments and opportunities are extremely exciting, there are also issues to factor in while dreaming up next generation car interfaces and features. On the information side, one thing to clearly be aware of is the impact of managing increased amount and types of information being displayed. Users would have to navigate through levels information to access all the different features, oftentimes while operating the vehicle. While usability will vary from system to system depending on how the physical and software interface are designed, the inherent nature of browsing through information levels means that an increased focus on usability and user interface design will be needed. Also, in addition to optimizing Web sites and applications for mobile devices, interface designers will eventually need to factor in vehicle information systems for future Web sites.</p>
<p class="MsoNormal">These are by no means limiting factors, but definitely remind us of the effort that needs to be spent on ensuring that the user&#8217;s needs are in mind when dreaming up gorgeous and innovative new in-car multimedia, informational, and entertainment systems. If so, we could all get our hands on and truly benefit from a lot of cool car features in the years to come. <span> </span><span> </span></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/evolution-of-in-vehicle-multimedia-informational-and-entertainment-systems/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Testing UI using Selenium IDE and RC</title>
		<link>http://molecularvoices.molecular.com/2008/testing-ui-using-selenium-ide-and-rc/</link>
		<comments>http://molecularvoices.molecular.com/2008/testing-ui-using-selenium-ide-and-rc/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 04:02:19 +0000</pubDate>
		<dc:creator>Charudatta Wad</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=899</guid>
		<description><![CDATA[On my current project, every change is accompanied by a long and tedious regression testing. Most of it is testing the JavaScript validation and the UI. This usually involves 100,000 clicks on different browsers!!
I was always looking for a chance to play with Selenium IDE and this was the perfect opportunity. Selenium is a suite [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:dd070b321471d16f615c7e56c46ac42f44247138'><p>On my current project, every change is accompanied by a long and tedious regression testing. Most of it is testing the JavaScript validation and the UI. This usually involves 100,000 clicks on different browsers!!</p>
<p>I was always looking for a chance to play with Selenium IDE and this was the perfect opportunity. Selenium is a suite of test tools to automate web app testing. There are usually two types of scenarios you would like to test:<br />
1) Checking the style of the page<br />
2) Validating if certain actions result in particular content on the page</p>
<p>Selenium offers three different tools to accomplish UI testing :</p>
<p>1) <a href="http://selenium-ide.openqa.org/">Selenium IDE</a> : is a firefox plugin that records your activity and converts it to a Selenium test!!  IDE can also convert your test in various programming languages that you can use with RC. The only disadvantage is it does not allow multi browser testing. Check out the intro video <a href="http://selenium.openqa.org/movies/intro.mov">here</a></p>
<p>2) <a href="http://selenium-rc.openqa.org/">Selenium Remote Control</a>: allows you to automate testing using different browsers in a programming language of your choice (Java, C#, PHP, Ruby, Python are supported). RC requires a server which acts as http proxy and launches browsers against any http website. You can use local-host as the RC server. The best way is to create your test scenarios using IDE and add a test case in RC code.</p>
<p>I have created a simple project for Selenium testing using C#. The source code can be checked out <a href="http://code.google.com/p/seleniumsample/">here</a>. This can be used as a good starting point to add more complex testing scenarios.</p>
<p>3) <a href="http://selenium-grid.openqa.org/">Selenium Grid</a>: allows you to scale out testing using multiple servers.</p>
<p>Selenium is perfect for testing Ajax apps and can be easily incorporated in a Continuous Integration System. Selenium cannot test Flash interactions (as expected).</p>
<p>Happy Testing!!</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/testing-ui-using-selenium-ide-and-rc/feed/</wfw:commentRss>
<enclosure url="http://selenium.openqa.org/movies/intro.mov" length="9052981" type="video/quicktime" />
		</item>
		<item>
		<title>Development for Mobile Devices Part Three</title>
		<link>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-three/</link>
		<comments>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-three/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 17:16:22 +0000</pubDate>
		<dc:creator>Michael Shpigel</dc:creator>
		
		<category><![CDATA[Mobile]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=878</guid>
		<description><![CDATA[Building an application to reside and execute on a mobile device brings a whole other set of considerations and issues versus thin client development. Unlike browser based mobile applications, resident applications are going to be more dependent on their device platform. 
When talking about development of downloadable applications it is important to distinguish whether the [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:06be2ccbb8ea1a46731194fad1983a79c31806aa'><p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Building an application to reside and execute on a mobile device brings a whole other set of considerations and issues versus thin client development. Unlike browser based mobile applications, resident applications are going to be more dependent on their device platform. </span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">When talking about development of downloadable applications it is important to distinguish whether the app is going to be written to a device platform or application platform. I will use term ‘device platform’ to mean mobile device hardware with its operating system or its integrated software. </span><span id="more-878"></span><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">I will use term ‘application platform’ to mean combination of programming language, general development API, and the runtime environment for that language on the mobile device. The application platform runs on top of the device platform.</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">When writing to device portability is not much of a concern, so you want to explore and use the SDK, tools and device emulator provided by the device or OS provider. Most of the major device platform vendors provide such tools for their devices. Since you are working with a specific device, many of the other issues that must be considered when working with a vast array of products such as performance and access to the device&#8217;s features and functionality (phone, camera, GPS, and so on) are probably more straightforward. The table below lists some of these device platforms and what they offer in the way of SDKs, tools, etc.</span></p>
<table class="MsoNormalTable" style="width: 525pt;" border="1" cellspacing="0" cellpadding="0" width="700">
<tbody>
<tr>
<td style="padding: 0.75pt; background: #99ccff none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>OS</span></p>
</td>
<td style="padding: 0.75pt; background: #99ccff none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Language/OS options</span></p>
</td>
<td style="padding: 0.75pt; background: #99ccff none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>SDKs/Tools</span></p>
</td>
<td style="padding: 0.75pt; background: #99ccff none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Developer Web Site</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Symbian OS</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>C++, Java, Ruby, Python, Perl, OPL, Flash Lite, .NET</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Carbide.c++ IDE (Nokia)-C++ and Java SDKs per device</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>developer.symbian.com</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Blackberry OS</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Java, .NET</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Blackberry Java Development Environment, Blackberry   plug-in for Visual Studio,Blackberry plug-in for Eclipse</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>na.blackberry.com/eng/developers/</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Palm OS</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>C, C++, Java</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Palm OS SDK, Java development with IBM Websphere   EveryPlace Micro Environment, Also offer Palm Windows Mobile SDK for Palm   products on Windows Mobile platform</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>www.palm.com/us/developer</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Motorola</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Java, Windows Mobile, Linux</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>MotoDev IDE (Java Eclipse based), MOTO Q Plug-Ins (for   VisualStudio), Many SDKs for various platforms</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>developer.motorola.com</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Nokia</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Java, C++, Python (S60)</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Carbide IDEs-Number of SDKs for various platforms that   integrate with industry IDEs</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>www.forum.nokia.com</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Sony Ericsson</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Java, Symbian OS, Windows Mobile</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>SDK for the Java ME, Mobile JUnit, Eclipse Device Explorer   Plugin, additional SDKs and integration plugins for IDEs</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>developer.sonyericsson.com/site/<br />
global/home/p_home.jsp</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>iPhone OS</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span> </span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>iPhone SDK</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>developer.apple.com/iphone</span></p>
</td>
</tr>
</tbody>
</table>
<h4>Application Development Platforms</h4>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">When considering application platform for your next mobile development project the choice is quite similar to the non-mobile world. <span> </span>Whether you are proponent of Java and open source platforms or prefer Microsoft tools there is always a question why do you like one platform vs. the other?</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Mobile development re-raises this question, and you may have to re-evaluate your answer in light of your mobile application development. Java, .NET (C#, VB), C, C++, Python, and other languages are all options available in mobile development. In some ways, the same criteria used to compare these on a desktop or server can be used to evaluate the languages use for mobile apps. However, mobile development does bring in other considerations which distort the old desktop/server application development environment discussions.</span></p>
<p>For example, Java&#8217;s strength has always been portability. Java is a widely available platform on all sorts of mobile devices. Sun touts some 2.1 billion devices with Java as indicated earlier. However, the exact same Java is not on all these devices. In order for Java to fit on so many different styles and shapes of platform, the Java architecture has been broken into a set of configurations and profiles. The configurations and profiles differ according to device and device capabilities.</p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Take the .NET platform as example number two. .NET shines in that you can use your choice of programming language (C#, VB, etc.) written to a single platform; that of .NET and the Microsoft operating system. Yes, efforts in projects like Mono attempt to make .NET more cross-platform, but the number of actual platforms and devices using these cross-platform .NET implementations is limited. Microsoft tools (for the most part those in Visual Studio) do a great job of making development to this particular platform very easy. In the mobile platform world, however, Microsoft is not the dominate OS. Thus, writing to this platform may not get you to those customers you want to capture.</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Let us look at three of the more popular application platform choices and look at ways to compare these platforms.</span></p>
<h5>Java Micro Edition (Java ME)</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Java ME, formerly called Java 2 Micro Edition (J2ME), functions as Java for mobile devices as well as the Java embedded in consumer electronics such as TV set-top boxes and printers. It is a runtime environment that goes on the device and a set of Java APIs and tools to create the applications. Java&#8217;s ubiquity on a number of platforms of all shapes and sizes is notable.</span></p>
<h5 style="margin-top: 0in; line-height: normal;">.NET Compact Framework<br />
<!--[if !supportLineBreakNewLine]--><br />
<!--[endif]--></h5>
<p style="margin: 0in 0in 12pt;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">This platform is a version of the .NET Framework for Windows Mobile OS platforms. It&#8217;s a subset of the standard .NET framework, but also includes some additional classes that address specific mobile device needs. For example, the library includes classes to work with the device&#8217;s touch screen. Classes specific to the PC platform were removed, such as classes associated with remoting. The CLR execution engine was rebuilt so that it runs more efficiently on mobile devices that may have limited memory, resources and power. Like Java ME, this platform targets both mobile devices and other consumer electronics. For example, the XBox 360 consoles include a version of the .NET Compact Framework. You can write applications for the platform in C# or VB.NET. The Windows Mobile OS holds a significant market share on high-end PDAs and &#8220;smart phones.&#8221;</span></p>
<h5>Binary Runtime Environment for Wireless (BREW)</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">BREW is an application runtime platform created by Qualcomm for mobile phones. It was originally created for Code Division Multiple Access (CDMA) devices, and more specifically, for Qualcomm&#8217;s CDMA devices and chipsets. Qualcomm spearheaded the development of standards for this communication technology&#8217;s use in digital cellular communications. BREW has since been ported to other devices, but largely remains a Qualcomm-specific platform. BREW provides a small runtime environment (approximately 150K in size) that runs on top of the device&#8217;s Application Specific Integrated Circuit (ASIC) or essentially its OS. Applications run atop the BREW runtime. Applications can be written in different languages, although most use C or C++. There are some Java implementations for BREW, but they require that the application run on the JVM—which runs on BREW, which runs on ASIC.</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">How do these environments compare to each other? A direct comparison can be difficult, given that many features provided through the application platform are a product of their targeted devices. However, some features worth examination are listed below.</span></p>
<h5 style="margin-top: 0in; line-height: normal;">Portability and Standards</h5>
<p class="MsoNormal" style="margin-bottom: 12pt; line-height: normal;"><span> </span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span>Java&#8217;s ubiquity on a number of platforms of all shapes and sizes is notable. In 2006, Sun claimed that Java was available on 3.8 billion devices and 1.2 billion phones. Sun&#8217;s developer web site lists the </span><a href="http://developers.sun.com/mobility/device" target="_blank"><span style="text-decoration: none; color: #4f81bd;">hundreds of devices</span><span style="text-decoration: none; color: #000000;"> already outfitted with Java ME capability</span></a><span>. Java, at its core, is meant to be platform-independent, but as indicated above, Java ME is a collection of specifications that outline a layered architecture:</span></p>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span>Configurations provide the basic services, libraries,      and virtual machine capabilities for a broad range of devices based on the      memory, power, and connectivity of the device.</span></li>
<li class="MsoNormal" style="line-height: normal;"><span>Profiles define the user interface, data storage, and      other APIs for a narrower set of devices in a configuration.</span></li>
<li class="MsoNormal" style="line-height: normal;"><span>Optional API Packages add capability to a configuration      and profile to support device capabilities not present on all devices      (such as multimedia and Bluetooth).</span></li>
</ul>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">This architecture allows Java to be added to devices large and small. However, the portability of an application depends on how many devices and, therefore, how many configurations, profiles, and APIs are targeted. The Java ME architecture can also impact how simple or complex application development can be.</span></p>
<p>Microsoft is .NET&#8217;s standard bearer. Proponents of .NET will claim other implementations of the .NET Common Language Infrastructure, such as Portable .NET and Mono, give .NET applications portability to other operating systems and devices, but portability is limited and these are not major players in the mobile arena. Windows Mobile OS is not a ubiquitous platform. It is common on relatively high-end &#8220;smart phones&#8221; and PDAs, but that popularity has not extended to lower end cell phones. Even on smart phones, a <a href="http://www.canalys.com/pr/2008/r2008021.htm" target="_blank"><span style="font-size: 11pt; line-height: 115%; text-decoration: none; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #000000;">fourth quarter 2007 market data report from Canalys</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"> indicates that Windows Mobile has only a 12 percent market share. Competitors such as Symbian have a much bigger share worldwide (about 2/3 of the market) and others, such as Apple, are also working to cut into Microsoft&#8217;s market share.</span></p>
<p>Unlike Java ME, BREW offers portability without the numerous APIs and environments. However, BREW is tightly controlled by Qualcomm. Developers must register (or, &#8220;authenticate&#8221; in Qualcomm terms) with Qualcomm and submit their applications for BREW testing before the applications can be put on a device. This is supposed to ensure a BREW application behaves properly and is able to port to any BREW-capable device without issue. However, the cost (at least $400) of the authentication/testing is not trivial and a barrier to the software enthusiasts. Also, there are complaints that BREW is implemented differently and inconsistently on different phones. The emulator is generic and does not demonstrate these differences.</p>
<h5 style="margin-top: 0in; line-height: normal;">Development Tools and Integrated Development Environments (IDEs)</h5>
<p style="margin: 0in 0in 12pt;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"><br />
Java ME SDKs and basic tools are free from Sun. However, given the multiple Java ME environments and APIs, there are multiple SDKs and toolkits. Plenty of open source and commercial IDEs exist for creating Java ME applications. Eclipse and Sun&#8217;s NetBeans are the two most popular open source IDEs. Commercial products like Rational Application Developer from IBM are also available and popular. Device vendors like Motorola also offer their own SDKs. If anything, the Java ME environment suffers from having too many development choices rather than too few. The complexity of Java ME&#8217;s architecture allows for its adaptation to a great number of platforms, but also can make finding or assembling a proper development environment more of a challenge.</span>
</p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">In this area, .NET Compact Framework development shines. While it is possible to write applications without it, few developers would write applications for the .NET Compact Framework (or .NET for that matter) without Microsoft&#8217;s Visual Studio. Visual Studio is not free. The latest version is Visual Studio 2008 and it can cost, depending on where purchased, $150 and up. Without question, this tool greatly simplifies mobile development for the .NET Compact Framework and has a low learning curve for those already familiar with .NET and C#/VB development.</span></p>
<p>BREW&#8217;s SDK is free and can be obtained from Qualcomm. However, developers also need an IDE. If writing BREW with C++, this means having a copy of Visual Studio 6.0, Visual Studio 2003 .NET, or Visual Studio 2005. Again, don&#8217;t forget the cost to be authenticated and have your application tested before deployment. This can be a significant hit to total cost of development.</p>
<h5>Emulation/Testing</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Through its SDKs and IDEs, Java ME environments offer a host of generic emulators for a number of devices. The Sun IDEs provide generic emulators that have &#8220;skins&#8221; that give the device emulator the appearance of a type of device with certain buttons, screen size, color depth, fonts, device controls, etc. Additionally, device vendors (Nokia, Motorola, etc.) provide SDKs that often offer more precise emulation for a particular device or set of devices. Some are able to be integrated with IDEs while others are stand alone.</span></p>
<p>The generic emulators don&#8217;t test vendor specific APIs. Additionally, as these emulators are generic in nature, they do not always accurately reflect specific device issues and capabilities. Testing on the actual target devices is always recommended, especially when it comes to Java ME applications.</p>
<p><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">The Device Emulator 2.0 is part of the Windows Mobile 6 SDK. This emulator does a great job of representing Windows OS devices and can be considered one of the strengths of developing mobile applications to the .NET platform. This emulator provides fake GPS, low battery emulation, and even goes to some length to provide an emulator that tests the behavior of your application with cellular communications state changes (incoming call, hang up, busy signal, and so on). This emulator is a true Advanced RISC Machine (ARM) emulator, which means the emulator runs the same code as real devices.</span></p>
<p>BREW&#8217;s emulator comes with the BREW SDK. However, it only runs on Windows. The testing and debugging of BREW applications is not easy and requires a lot of outside assistance. First, the BREW Emulator (called a Simulator) does not truly emulate the handset&#8217;s hardware. Instead, BREW applications are compiled to native code and linked with an x86-compatible BREW runtime library. &#8220;Simulation&#8221; hides issues related to the actual hardware. In order to avoid these issues, developers should test their applications on real BREW handsets. For this, an application must first be compiled and linked into ARM binary form to run on BREW handset. The compiler/linker is available from Qualcomm. The application must then be digitally signed. Again, another tool from Qualcomm is required. Finally, the application can be uploaded to a BREW handset for testing via another tool (and USB or serial cable) called the AppLoader that is available from… Qualcomm. After the application has tested out, it can then be submitted to Qualcomm for its &#8220;TRUE BREW&#8221; testing. By the way, once an application has been tested and ready for deployment, the operator that owns the relationship with the handset customer must be convinced to offer your application. They may choose to do more testing of your application before offering it to the customer.</p>
<p><span class="Heading5Char">Device Feature Access</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Java ME&#8217;s access to a device&#8217;s fundamental capabilities (like camera for instance) typically requires them to be included in the configuration, profile, and/or optional API for that device. This varies greatly according to platform. Only one of the configurations (CDC) allows native interface access (JNI), so accessing the device&#8217;s feature even outside of Java may not be possible.</span></p>
<p>The .NET Compact Framework is written to the Windows Mobile OS, and so it has access to the same device capabilities as the OS. Which means the .NET Compact Framework application has access to just about everything and the device has and there is usually a convenient API to access it.</p>
<p>BREW allows direct access to the features of the device like the screen buffer, which is important for graphics intensive applications like games. At the discretion of the handset provider, BREW extension modules can add access to non-standard device functions.</p>
<h5>Performance</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Java ME runs on a virtual machine and its performance can be an issue especially on limited power/processing mobile devices. Like the Java virtual machine, the .NET Compact Framework requires applications to ride atop a runtime environment so performance of .NET apps is considered average by most accounts.</span></p>
<p>BREW applications, on the other hand, typically have very good performance. This is because the BREW applications run closer to the hardware layer than Java ME or .NET Compact Framework applications.</p>
<h5>Platform and Application Provisioning</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Getting the application platform and applications onto the devices can be problematic especially since the devices can literally be anywhere in the world.</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Java ME&#8217;s application provisioning strategy depends on the configuration. An Over-the-Air (OTA) Provisioning specification defines how applications can be obtained on devices that run Java ME&#8217;s Connected Limited Device Configuration (CLDC). While the specification is in place, carrier and/or vendor support for the specification and how end-users can obtain their Java ME application is not always seamless (see the blog </span><a href="http://www.nextgenmoco.com/2008/01/so-you-want-to-deploy-j2me-app-in-us.html" target="_blank"><span style="font-size: 11pt; line-height: 115%; text-decoration: none; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #000000;">So, you want to deploy a J2ME app in the US?</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">). There is no OTA specification for Connected Device Configuration (CDC) applications and therefore no consistent technology or strategy for getting these applications to their devices—particularly over the air.</span></p>
<p>As for the Java ME runtime environment, it is often factory installed by the vendor, especially on cell phones. In some cases, however, the runtime must be installed along with the application by developers or consumers, which adds to deployment frustrations.</p>
<p>The .NET Compact Framework is already installed with Windows Mobile OS, so getting the base application platform in this environment shouldn&#8217;t be an issue. ActiveSync allows Windows Mobile OS devices to be updated quickly and easily via connection to a desktop. In addition, over-the-air provisioning is technically possible, but it requires the support of the carrier and/or vendor. In particular, they must provide a device management (DM) server. In its documentation on Windows Mobile OS, <a href="http://msdn2.microsoft.com/en-us/library/bb737226.aspx" target="_blank"><span style="font-size: 11pt; line-height: 115%; text-decoration: none; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #000000;">Microsoft notes</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"> that &#8220;Microsoft does not provide an OMA DM or an OMA Client Provisioning server. The OEM, Operator, or a third party must create their own server&#8221;.</span></p>
<p>The effort to get an application to the point of delivery can be extensive with BREW. However, once ready, BREW&#8217;s application deployment and provisioning plans are well thought out and where BREW excels, especially for application developers targeting devices in the hands of the general public. The operator manages the available BREW applications for download through the BREW Distribution System (BDS). This system allows handset users to select and download applications over the air and bill them accordingly. The operator and Qualcomm conveniently handle all the distribution and billing details. Of course, this comes at a cost. <a href="http://www.developer.com/ws/brew/article.php/1454711" target="_blank"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #4f81bd;">This document</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"> indicates that developers receive 80 percent of the application&#8217;s wholesale price while Qualcomm and the operator take 20 percent. This over-the-air provisioning also allows the applications to be quickly updated or fixed. In fact, the handset manufacturers provide new features and fix bugs over-the-air also using BREW extensions.</span></p>
<h5>Other Resident App Options</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Again, this is not a complete list of resident application development technologies. The Open Handheld Alliance, whose members include Google, HTC, Intel, Motorola, Qualcomm, Samsung, LG, T-Mobile, and Nvidia, released Android in November of 2007. Android applications are written in Java with an Android Java SDK, but this Java is not Java ME or Java SE. Android applications are targeted to run on a custom virtual machine (Dalvik) and Linux OS. While there is considerable interest in Android, there are no major devices that run this application platform today. </span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Apple released its SDK for the iPhone. This is certainly an application platform that is impacting mobile development and attracts the business community to think about the iPhone as a possible platform. iPhone SDK comes with xCode IDE, iPhone simulator, Interface Builder and Performance Analysis tools. Sun is also developing a JVM for the iPhone OS. </span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Still there are other mobile development platforms that may not fit under a heading of &#8220;major&#8221; but might be worthy of exploration given your particular platform and application needs. Nokia has released a Python interpreter for some of its mobile phones. Lazarus provides a Pascal (Object Pascal) environment for select devices. Straight C/C++ applications can be written for Windows Mobile and other platforms. And regular Java (Java SE) is available on some mobile device platforms and James Gosling </span><a href="http://sun.systemnews.com/articles/116/4/opt-dev/18847" target="_blank"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #4f81bd;">has hinted</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"> that this is ultimately where Java is heading in the mobile space.</span></p>
<h5>Other Application Considerations</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">In addition to the considerations listed above in thin and resident application development, there are some additional issues to consider when assembling a mobile application. These issues apply to both browser-based and resident applications, but are unique to mobile development.</span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span class="Heading5Char">Data Entry Complications</span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span>A while ago, a story on CBS Sunday Morning featured a Japanese woman that wrote and distributed novels via her cell phone! She wrote an entire novel in six months on her cell phone! Some have been clocked at text entry of about 100 words a minute. Amazing feats considering that while many are becoming more familiar with the user interface of mobile devices, it is often a clumsy interface compared to that of the desktop; especially to those of us that are older than the cell phone.<br />
</span><br />
<span>In 2006, the World Wide Web Consortium came out with the proposed </span><a href="http://www.w3.org/TR/mobile-bp/" target="_blank"><span style="color: #4f81bd;">Mobile Web Best Practices 1.0</span><span style="color: #000000;">, </span><span style="color: #4f81bd;">Basic Guidelines recommendation</span></a><span>. In it, they state &#8220;User input is typically more or a lot more restrictive on Mobile devices, which may lack pointing devices and usually do not have a standard keyboard with which to enter text.&#8221; So what do they recommend? Some of the recommendations include keeping the number of keystrokes required to a minimum, avoid free text entry where possible, and provide pre-selected default values where possible.<br />
</span><br />
This same group indicated that URL&#8217;s maybe one of the worst offenses to the mobile Web user interface. The length of the URLs to many web sites makes getting to sites painful using mobile devices.</p>
<p>Many devices also lack a pointing device (mouse, pen, etc.) for interaction. Even when a device has a touch screen, the precision of one&#8217;s finger to act as a pointing device on a small screen makes many common desktop UI &#8220;widgets&#8221; like spin boxes difficult to use. Also, mouse movements are not tracked on most mobile devices. Technically, it is a challenge to differentiate mouse movements and mouse events when there is a touch screen. Therefore, mouse events that trigger tooltips and other such actions are not available. Gestures on mobile devices may even differ from those on the desktop. For example, dragging on an iPhone is for scrolling.</p>
<p>These limitations are not killers, but they do require consideration when building an application for the mobile device and typically cause current Web sites to be revisited before they can be considered &#8220;mobile ready.&#8221;</p>
<p><span class="Heading5Char">Interruptions and Interactions</span>
</p>
<p class="MsoNormal" style="margin-bottom: 12pt;">The mobile device is many things today. In some cases, it&#8217;s a camera, text messenger, music player, personal information management system, GPS navigational system, and, oh yes, a phone. Does your mobile application interact well with all these capabilities? Does it need to interact with any of these features? What happens when a user is browsing your site or using your resident mobile application and a cell phone call comes in? As indicated earlier, it is interesting to note that the new Windows Mobile 6 developer platform goes to some length to provide an emulator that tests the behavior of your application as the state of cellular communications changes.</p>
<p>Do you need a picture from the user&#8217;s cell phone camera or a position from its GPS? Does the mobile device give your application runtime access to these features? Do these devices and their associated applications interrupt your applications use or vice versa? All points to consider (and test!) when looking at mobile application development. Also, when considering resident- vs. browser-based client application, note that access to these types of features may be tougher or impossible via the browser approach.</p>
<p><span class="Heading5Char">Display Differences</span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;">Of course, the mobile device display is generally smaller than that of a desktop, but display limitations aren&#8217;t restricted to just the number of pixels available. Fewer colors and slower display speeds can also hamper the experiences of mobile users.</p>
<p>The Nokia N series devices have been manufactured to provide great multimedia capabilities. The N82 has a 2.4&#8243; display, LCD screen that offers a 240 x 320 pixel display and 16M of colors. It&#8217;s impressive, especially given most competitive mobile products today. But remember, most of our desktops and laptops have at least 800 x 600 pixels (minimum and what most of the web is built to) and 32bits (&gt; four billion colors). Doing the math for you, that&#8217;s about 1/6th the display and ½ the color of our &#8220;normal&#8221; displays.</p>
<p>The display of mobile devices is certainly better than it was five years ago. According to a <a href="http://www.reportbuyer.com/telecoms/mobile/mobile_device_market_trends_2008.html" target="_blank"><span style="color: #4f81bd;">Report Trend report on mobile trends for 2008</span></a>, we may have Apple to thank for continued improvements in the display in the not too distant future:<em></em></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt;"><em>&#8220;The idea that User Interface = Culture Code is spreading in the market, and Apple iPhone can be taken as a prime example. Against this backdrop, handset vendors are expected to pursue mergers with UI companies while introducing a variety of new UI technologies, with a view to delivering differentiated OEM UI to the users.&#8221; </em></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">The display restrictions and limited interfaces provided by mobile devices do not mean these devices can never serve as a powerful instrument to get information and product to customers. Proof positive is again from that fast-thumbed community in Japan. The New York Times </span><a href="http://www.nytimes.com/2008/01/20/world/asia/20japan.html?_r=2&amp;oref=slogin&amp;ref=technology&amp;pagewanted=all&amp;oref=slogin" target="_blank"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #4f81bd;">reported in January of this year</span></a><span style="text-decoration: underline;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #4f81bd;"> </span></span><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">that five of the top ten novels in Japan last year were originally sold on cell phones! If thousands are willing to read a 200+ page novel over the mobile web using a cell phone, I have to believe there are still a lot of applications yet to be written and utilized on the mobile devices and technology at our disposal today.<br />
</span><br />
<strong>Time to Get in the Game</strong>
</p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">With the arrival of so many mobile devices (and by default mobile users), there is no time like the present to bring mobile applications to life. Mobile development technology has arrived and is ready for prime time. As with all application development, the tough part of developing mobile apps is going to be trying to make the best architectural choices and design decisions given the needs and available technology.</span></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-three/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Empowerment</title>
		<link>http://molecularvoices.molecular.com/2008/empowerment/</link>
		<comments>http://molecularvoices.molecular.com/2008/empowerment/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 05:01:51 +0000</pubDate>
		<dc:creator>Ernie Chan</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Web 2.0 &amp; Social Media]]></category>

		<category><![CDATA[Add new tag]]></category>

		<category><![CDATA[campaign]]></category>

		<category><![CDATA[election]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=816</guid>
		<description><![CDATA[The internet gives us an amazing ability to quickly and effectively influence people, friends and businesses. From blogs to message boards and from Yelp to Facebook, the power of user-driven, or &#8220;grassroots&#8221; content (I&#8217;m not a big fan of the term &#8220;netroots&#8221;), has never been greater.
I&#8217;m exited about this year&#8217;s election because it is our [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:9f13f83170b5d2604e2495a758b4011c95c493dd'><p class="MsoNormal">The internet gives us an amazing ability to quickly and effectively influence people, friends and businesses.<span> </span>From blogs to message boards and from Yelp to Facebook, the power of user-driven, or &#8220;grassroots&#8221; content (I&#8217;m not a big fan of the term &#8220;netroots&#8221;), has never been greater.</p>
<p class="MsoNormal">I&#8217;m exited about this year&#8217;s election because it is our first real intersection of this power with politics.<span> </span>Sure, Howard Dean first used the internet to raise money, but now we&#8217;re seeing mass text-messaging, Facebook apps, Twitter feeds, YouTube uploads, Flickr albums, blog entries, etc.  <span> </span></p>
<p class="MsoNormal">There are so many innovative and interesting ways individuals can organize, evangelize, and campaign for the candidate of their choice.  And so much of it&#8217;s driven by user-empowerment through social media.<span> </span></p>
<p class="MsoNormal">Here’s an example of how the Obama campaign is equipping their supporters with web 2.0 tools as ways to organize and campaign.<span> </span></p>
<div id="attachment_817" class="wp-caption alignnone" style="width: 257px"><a href="https://molecularvoices.molecular.com/wp-content/uploads/2008/08/13.gif"><img class="size-medium wp-image-817" title="13" src="https://molecularvoices.molecular.com/wp-content/uploads/2008/08/13-247x300.gif" alt="" width="247" height="300" /></a><p class="wp-caption-text">&quot;Here, YOU do it...&quot;</p></div>
<p>So between now and November, who will have the most interesting example(s)?  Who will be more effective? Will social media change politics forever?  Or will politics help drive advancements in social media?</p>
<p>And ultimately, will it really matter on election night?</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/empowerment/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Development for Mobile Devices Part Deux</title>
		<link>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-deux/</link>
		<comments>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-deux/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 19:49:30 +0000</pubDate>
		<dc:creator>Michael Shpigel</dc:creator>
		
		<category><![CDATA[Mobile]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=737</guid>
		<description><![CDATA[IDC has reported that it believes 1.3 billion (that&#8217;s about 1/5 of the world&#8217;s population) will be connected to the internet via mobile phone by the end of this year. With that much thin-client capability and connectivity, it&#8217;s hard to ignore the mobile browser as a very viable means of putting mobile applications in the [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:e4fdfe846d0ebafa46ee793b4a2c52d9a8fbaccb'><p class="MsoNormal">IDC has reported that it believes 1.3 billion (that&#8217;s about 1/5 of the world&#8217;s population) will be connected to the internet via mobile phone by the end of this year. With that much thin-client capability and connectivity, it&#8217;s hard to ignore the mobile browser as a very viable means of putting mobile applications in the hands of the consumer.</p>
<p class="MsoNormal">Developing for mobile browser however is a tricky business since the choice of browsers running on mobile devices is much greater than in the desktop world. The good news is that thin client development allows many organizations to reuse most, if not all, of the backend of their applications. Getting the apps to the device is also a lot easier. It&#8217;s the user interface portion of the application that needs to be addressed to support the mobile browser thin client.</p>
<p><!-- more --></p>
<p class="MsoNormal">Most of the mobile devices come with the built in browser however more and more devices allow you to download third party browser.</p>
<p class="MsoNormal">Here is the list of built-in default browsers:</p>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><a title="Android (mobile phone platform)" href="http://en.wikipedia.org/wiki/Android_%28mobile_phone_platform%29">Android (mobile phone platform)</a> by <a title="Google" href="http://en.wikipedia.org/wiki/Google">Google</a> (based on <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a>)</li>
<li class="MsoNormal" style="line-height: normal;">BlackBerry      Browser by <a title="Research in Motion" href="http://en.wikipedia.org/wiki/Research_in_Motion">Research in Motion</a> (proprietary)</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Blazer (web browser)" href="http://en.wikipedia.org/wiki/Blazer_%28web_browser%29">Blazer</a> by <a title="Palm, Inc." href="http://en.wikipedia.org/wiki/Palm,_Inc.">Palm</a>,      installed on all newer Palm <a title="Palm Trēo" href="http://en.wikipedia.org/wiki/Palm_Tr%C4%93o">Treos</a> and PDAs (based on <a title="NetFront" href="http://en.wikipedia.org/wiki/NetFront">NetFront</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Danger browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Danger_browser&amp;action=edit&amp;redlink=1">Danger browser</a> by <a title="Danger (company)" href="http://en.wikipedia.org/wiki/Danger_%28company%29">Danger</a> (proprietary), installed on all      Danger-designed devices including the <a title="T-Mobile Sidekick" href="http://en.wikipedia.org/wiki/T-Mobile_Sidekick">T-Mobile Sidekick</a>.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Embider (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Embider&amp;action=edit&amp;redlink=1">Embider</a> by <a title="Infraware (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Infraware&amp;action=edit&amp;redlink=1">Infraware</a>[4] (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Internet Explorer Mobile" href="http://en.wikipedia.org/wiki/Internet_Explorer_Mobile">Internet Explorer Mobile</a> by Microsoft</li>
<li class="MsoNormal" style="line-height: normal;"><a title="JB5 Mobile Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=JB5_Mobile_Browser&amp;action=edit&amp;redlink=1">jB5 Mobile Browser</a> by      Jataayu Software, available on Symbian Series 60, Windows Mobile and Linux      Platforms</li>
<li class="MsoNormal" style="line-height: normal;">MOTOMAGX      by <a title="Motorola" href="http://en.wikipedia.org/wiki/Motorola">Motorola</a> (based on <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="NetFront" href="http://en.wikipedia.org/wiki/NetFront">NetFront</a> by <a title="Access Co. Ltd." href="http://en.wikipedia.org/wiki/Access_Co._Ltd.">ACCESS Co., Ltd.</a> (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Nokia Series 40" href="http://en.wikipedia.org/wiki/Nokia_Series_40">Nokia      Series 40</a> Browser by <a title="Nokia" href="http://en.wikipedia.org/wiki/Nokia">Nokia</a> (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Novarra (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Novarra&amp;action=edit&amp;redlink=1">Novarra</a> nWeb (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Obigo Browser" href="http://en.wikipedia.org/wiki/Obigo_Browser">Obigo      Browser</a> by Obigo AB (Sweden), 100% owned by Teleca AB (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;">Openwave      Mobile Browser by <a title="Purple Labs" href="http://en.wikipedia.org/wiki/Purple_Labs">Purple Labs</a> (newly aquired from <a title="Openwave" href="http://en.wikipedia.org/wiki/Openwave">Openwave</a>)      (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Opera Mobile" href="http://en.wikipedia.org/wiki/Opera_Mobile">Opera      Mobile</a> by Opera Software ASA (Norway). - Capable of reading HTML and      reformat for small screens (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Picsel Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Picsel_Browser&amp;action=edit&amp;redlink=1">Picsel Browser</a> by <a title="Picsel" href="http://en.wikipedia.org/wiki/Picsel">Picsel Techologies</a> (Scotland) (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="PlayStation Portable" href="http://en.wikipedia.org/wiki/PlayStation_Portable#Web_browser">PlayStation Portable web browser</a> by <a title="Sony" href="http://en.wikipedia.org/wiki/Sony">Sony</a> (based on <a title="NetFront" href="http://en.wikipedia.org/wiki/NetFront">NetFront</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Safari (web browser)" href="http://en.wikipedia.org/wiki/Safari_%28web_browser%29">Safari</a> by <a title="Apple Inc" href="http://en.wikipedia.org/wiki/Apple_Inc">Apple Inc</a> on <a title="IPhone" href="http://en.wikipedia.org/wiki/IPhone">iPhone</a> and <a title="IPod Touch" href="http://en.wikipedia.org/wiki/IPod_Touch">iPod      Touch</a> (based on <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Iris Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Iris_Browser&amp;action=edit&amp;redlink=1">Iris Browser</a> by <a title="Torch Mobile (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Torch_Mobile&amp;action=edit&amp;redlink=1">Torch Mobile</a> for Pocket PCs      (based on <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Wapaka Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Wapaka_Browser&amp;action=edit&amp;redlink=1">Wapaka Browser</a> <a title="Java platform" href="http://en.wikipedia.org/wiki/Java_platform">Java</a> micro-browser by <a title="Digital Airways (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Digital_Airways&amp;action=edit&amp;redlink=1">Digital Airways</a>.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Web Browser for S60" href="http://en.wikipedia.org/wiki/Web_Browser_for_S60">Web Browser for S60</a> by <a title="Nokia" href="http://en.wikipedia.org/wiki/Nokia">Nokia</a> (based on <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a>).<span id="more-737"></span></li>
</ul>
<p class="MsoNormal">And here is the list of browsers that can be downloaded and install on your mobile device:</p>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><a title="Bluelark (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Bluelark&amp;action=edit&amp;redlink=1">Bluelark</a> Bluelark bought by      Handspring Inc.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Deepfish" href="http://en.wikipedia.org/wiki/Deepfish">Deepfish</a> Beta from Microsoft</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Doris" href="http://en.wikipedia.org/wiki/Doris">Doris</a> by      Anygraaf Oy (Vantaa, Finland)</li>
<li class="MsoNormal" style="line-height: normal;">iPanel for      <a title="Palm OS" href="http://en.wikipedia.org/wiki/Palm_OS">Palm OS</a>,</li>
<li class="MsoNormal" style="line-height: normal;"><a title="JB5 Mobile Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=JB5_Mobile_Browser&amp;action=edit&amp;redlink=1">jB5 Mobile Browser</a> Beta from Jataayu Software.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="JOCA" href="http://en.wikipedia.org/wiki/JOCA">JOCA</a> by      InteracT!V, another proxy-rendering free software.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Minimo" href="http://en.wikipedia.org/wiki/Minimo">Minimo</a> by      Mozilla Foundation (based on <a title="Gecko (layout engine)" href="http://en.wikipedia.org/wiki/Gecko_%28layout_engine%29">Gecko</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Opera Mini" href="http://en.wikipedia.org/wiki/Opera_Mini">Opera      Mini</a> by Opera Software - supports most features of stand-alone Opera,      but can run on less capable phones by offloading memory-intensive      rendering to proxy server (based on Opera Mobile running on a server).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Opera Mobile" href="http://en.wikipedia.org/wiki/Opera_Mobile">Opera      Mobile</a> by Opera Software - supports all modern web standards supported      by desktop browsers, including XHTML, CSS2 and Ajax. Has advanced Small      Screen Rendering that adapts regular pages to small screen (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Pixo" href="http://en.wikipedia.org/wiki/Pixo">Pixo</a> by Sun      Microsystems (Pixo acquired by Sun July 2003)</li>
<li class="MsoNormal" style="line-height: normal;"><a title="PocketWeb (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=PocketWeb&amp;action=edit&amp;redlink=1">PocketWeb</a> by tlogic.de</li>
<li class="MsoNormal" style="line-height: normal;"><a title="RocketBrowser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=RocketBrowser&amp;action=edit&amp;redlink=1">RocketBrowser</a> Rocket      Mobile, Inc.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="SAS (browser) (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=SAS_%28browser%29&amp;action=edit&amp;redlink=1">SAS</a></li>
<li class="MsoNormal" style="line-height: normal;"><a title="Stanford University" href="http://en.wikipedia.org/wiki/Stanford_University">Stanford</a> <a title="Power Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Power_Browser&amp;action=edit&amp;redlink=1">Power Browser</a> created in      Stanford&#8217;s InfoLab</li>
<li class="MsoNormal" style="line-height: normal;"><a title="TeaShark (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=TeaShark&amp;action=edit&amp;redlink=1">TeaShark</a> - a free Java-based      browser with a desktop-like layout</li>
<li class="MsoNormal" style="line-height: normal;"><a title="ThunderHawk (web browser)" href="http://en.wikipedia.org/wiki/ThunderHawk_%28web_browser%29">ThunderHawk</a> by Bitstream Inc.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="UCWEB" href="http://en.wikipedia.org/wiki/UCWEB">UCWEB</a> by UCWEB      Technology</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Universe browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Universe_browser&amp;action=edit&amp;redlink=1">Universe</a> by OpenMobl      Systems</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Webby Mobile" href="http://en.wikipedia.org/wiki/Webby_Mobile">Webby      Mobile</a> by AnOriginalIdea</li>
<li class="MsoNormal" style="line-height: normal;"><a title="WebViewer (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=WebViewer&amp;action=edit&amp;redlink=1">WebViewer</a> - a free Java based      browser by Reqwireless</li>
<li class="MsoNormal" style="line-height: normal;"><a title="WinWAP" href="http://en.wikipedia.org/wiki/WinWAP">WinWAP</a> by <a title="Winwap Technologies (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Winwap_Technologies&amp;action=edit&amp;redlink=1">Winwap Technologies</a></li>
</ul>
<p class="MsoNormal">As you can see the diversity is staggering. However there is good news on the horizon – Forrester assures as that:</p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-family: MinionPro-Regular; color: #0070c0;">“over the next few years, the highly fragmented mobile browser market will begin to settle out as regular Web developers target fully capable browsers like Opera Mini and Internet Explorer (IE) Mobile and those based on WebKit.”</span></p>
<p class="MsoNormal">
<p class="MsoNormal">Some of the browsers mentioned above such as Opera Mobile or Safari can display HTML (or XHTML) complete with cascading style sheets and client-side scripting. Therefore, the &#8220;normal&#8221; web site written largely with HTML/XHTML, CSS and client side scripts might be completely accessible in these browsers, even if they don&#8217;t always offer the best interface given the constrains of display space and interactivity. However, in other cases, a web site or web application may need to be rewritten or otherwise dynamically converted into an alternative markup/wireless protocol. Again, there are plenty of choices. However there seems to be increased consolidation toward XHTML-Mobile Profile (MP). A lot depends on where (United States vs. Japan vs. …) and when (today, in a couple of years, etc.) you intend to offer your application and on what types of devices. Below is the list of most popular markup options in use today.</p>
<table class="MsoTableGrid" style="border: medium none; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border: 1pt solid black; padding: 0in 5.4pt; background: #e5dfec none repeat scroll 0% 0%; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: #4f81bd;">Markup Language</span></p>
</td>
<td style="padding: 0in 5.4pt; background: #e5dfec none repeat scroll 0% 0%; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: #4f81bd;">What is it</span></p>
</td>
<td style="padding: 0in 5.4pt; background: #e5dfec none repeat scroll 0% 0%; width: 225pt;" width="300" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: #4f81bd;">Pros/Cons</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">XHTML-MP (WAP 2.0)</p>
</td>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">Derived from and is a subset of XHTML</p>
</td>
<td style="padding: 0in 5.4pt; width: 225pt;" width="300" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">+Developers can use the same tools for mobile and normal web sites.   +More formatting power than WML.+WAP Gateway no longer critical component.-   May display differently in different browsers.</p>
</td>
</tr>
<tr>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">WML (WAP 1.x)</p>
</td>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">XML document with features inherited from HTML. First generation   wireless markup language</p>
</td>
<td style="padding: 0in 5.4pt; width: 225pt;" width="300" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">+WML and WMLScript are fairly easy to learn.+Was widely accepted.-WAP   Gateway a concern in converting HTML to/from WML.-Soon to be phased out, but   still used heavily in places like far east.</p>
</td>
</tr>
<tr>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">cHTML</p>
</td>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">A compact and simple form of HTML. Similar to WML.</p>
</td>
<td style="padding: 0in 5.4pt; width: 225pt;" width="300" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">+ Offers features such as access keys and phone number shortcuts-   Limited use; big in Japan—especially on DoCoMo phones.</p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal">
<p class="MsoNormal">Another option for developers of the mobile Web applications is to use Mobile Development Platform such as Netbiscuits or Swift. I will describe how such platform may be used using Netbiscuits as an example.</p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt;">When a mobile device requests a URL of your Mobile Web Application, this HTTP Request</p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt;">will be routed to and processed by the Netbiscuits platform.<span> </span>The platform is working similar to a proxy server. In a first step, Netbiscuits will forward the HTTP-request to your Web- &amp; Application-Server (e.g.</p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt;">Apache, Tomcat, IIS, etc.) which hosts the BiscuitML (<span>BiscuitML is an XML-based markup language used to build mobile web pages with the </span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;;">Netbiscuits Platform</span>)Application. As in a normal web application, you will process the request and retrieve content from a Content Management System or database for example. Instead of creating HTML output, your application has to send a HTTP response back containing a valid BiscuitML document. The BiscuitML markup will then be processed by the Netbiscuits platform and be transcoded into the right markup (XHTML MP, WML etc.), specifically optimized for the mobile device that sent the initial request (Software such as WURFL or DeviceAtlas is used to determine parameters of the device) .<span> </span>Although BiscuitML pages can be static pages, in most cases you would create dynamic applications, of course. You can do that by using your preferred programming language like Java, PHP, C#/VB.NET, etc., whatever you find useful to create dynamic web applications. <span> </span>Plugins for certain IDEs are available as well, which make development with BiscuitML <span> </span>easier. The page content itself and also images that should be displayed inline in the pages of your mobile portal can reside on your Web- and Application server. Other multimedia files, especially those used as downloads (e.g. wallpapers, videos etc.), need to be uploaded to the Netbiscuits Media Repository first.</p>
<p class="MsoNormal">
<p class="MsoNormal">Below is high level architecture diagram of a Netbiscuits web application:</p>
<p class="MsoNormal"><img src="file:///C:/DOCUME~1/mshpigel/LOCALS~1/Temp/moz-screenshot-1.jpg" alt="" /></p>
<p class="MsoNormal"><a href="https://molecularvoices.molecular.com/wp-content/uploads/2008/08/netbiscuits.gif"><img class="alignnone size-medium wp-image-738" title="Netbiscuits Platform Architecture" src="https://molecularvoices.molecular.com/wp-content/uploads/2008/08/netbiscuits-300x240.gif" alt="" width="300" height="240" /></a></p>
<p class="MsoNormal">
<p class="MsoNormal"><img src="file:///C:/DOCUME~1/mshpigel/LOCALS~1/Temp/moz-screenshot.jpg" alt="" /></p>
<h3>Mobile Web 2.0?</h3>
<p class="MsoNormal">
<p class="MsoNormal">Now we know how create Web Apps for Mobile devices. Next question is – Can we make it Rich? Can we give customers what they come to expect using regular Web? It may be surprising but the Rich Mobile Internet dubbed Mobile 2.0 is the current battleground , with companies such as Microsoft, Sun and Adobe offering their own solutions.<span> </span>Unlike their desktop counterparts, mobile RIA solutions are not always integrated as part of the browser. So each technology/RIA application may require users to install yet another engine the mobile device in order to load and display. This certainly blurs the line between RIA applications and other native or resident applications for the mobile devices. So what are the options for RIA on mobile platforms?</p>
<p class="MsoNormal"><span> </span><strong>Flash Lite</strong></p>
<p class="MsoNormal">Adobe&#8217;s Flash Lite is a scaled-down version of Adobe&#8217;s ever-popular Flash Player that is engineered specifically for mobile devices.</p>
<p>This RIA technology provides access to a mobile device&#8217;s features, including Bluetooth, camera, microphone, and GPS. Developing with Adobe Flash products is considered easy, and a large and active community is available for support and help. Flash Lite&#8217;s strength is that it uses vector-based graphics (although it also supports bitmapped graphics) which scales well on screens of varying resolutions—but sometimes at the cost of poor performance. You can conveniently convert desktop Flash content to mobile Flash Lite displays with minimal effort, which helps if your organization already uses a lot of Flash on its web site or in its web applications. Flash Lite can also run on top of other runtime environments such as Java ME or BREW.</p>
<p class="MsoNormal">Flash Lite has not been widely available on mobile devices outside of Japan and Korea, but this is rapidly changing. Adobe&#8217;s 2007 Financial Analyst Meeting notes indicate that over one billion handsets will include Flash capability before the end of 2009. Access to Flash Lite content can be expected to blossom as more carriers and devices support the platform. Most of the major cell phone providers (LG, Motorola, NEC, Nokia, Sony Ericsson, etc.) now ship with products that have Flash Lite pre-installed.</p>
<p class="MsoNormal"><strong>Silverlight</strong></p>
<p class="MsoNormal">Straight from Microsoft&#8217;s <a href="http://silverlight.net/" target="_blank">Silverlight web site</a>, Silverlight is described as: &#8220;a cross-browser, cross-platform, and cross-device plug-in for delivering the next generation of .NET based media experiences and rich interactive applications for the web.&#8221; What does that mean? Well, Silverlight is intended to be a competitor to Adobe Flash. However, instead of compiled applications (such as Flash delivers), Silverlight applications are delivered to the browser in the form of Extensible Application Markup Language (XAML), which is an XML-based language. The XAML is then read and used by a browser plug-in to display rich content. The plug-in reads the XAML files, which can declaratively specify the UI, and play MP3, WMV, and WMA files without a Windows Media Player or the WMP ActiveX control. Microsoft is expected to make Silverlight available for use with some mobile browsers.</p>
<p>On the positive side, because XAML is text and not a compiled file, supporters say Silverlight applications will be more &#8220;searchable&#8221; via engines like Google than Flash applications. Silverlight 1.0 is expected to be released for mobile platforms (specifically Windows Mobile 6 platforms and Nokia S60 devices) by the end of the year.</p>
<p class="MsoNormal"><strong>JavaFX Mobile</strong></p>
<p class="MsoNormal">JavaFX is meant to compete with both Silverlight and Flash. JavaFX is a family of products initially comprised of JavaFX Script and JavaFX Mobile. JavaFX Script (JavaFX for short) is a scripting language meant to provide rich user interfaces using syntax that resembles JavaScript and Scalar Vector Graphics (SVG). As its name implies, JavaFX Mobile is intended to be used on mobile platforms.</p>
<p class="MsoNormal">JavaFX Script is a scripting language that runs on top of a Java runtime. JavaFX resembles Java, JavaScript, and other scripting languages in some of its syntax, but developers can also use the standard Java syntax and make use of an extensive set of Java APIs. Sun claims that Java is the most ubiquitous application platform for mobile devices and can be found on over 2.1 billion devices—a lead it does not intend to give away to the likes of Silverlight or Flash technology. However, where Silverlight on mobile platforms may be considered a <em>young</em> technology, Java FX is, in fact, an <em>infant</em> technology - Java FX Preview SDK had just been released.</p>
<p style="margin-bottom: 12pt; line-height: 115%;">JavaFX Mobile is mostly based on technology which Sun acquired when it bought SavaJe in April last year. Sun has developed Java as a technology which it can license to others. However, JavaFX Mobile has been developed as a product it will sell.<span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"><br />
</span><br />
<strong>Mobile AJAX</strong></p>
<p>Mobile AJAX is nothing more than AJAX used on mobile browsers, in other words, mobile AJAX is just AJAX. Those who believe that writing native application software is the wrong approach to mobile software development (and that native mobile applications are on the way out) may find additional support for their case in &#8220;mobile&#8221; AJAX. Some mobile browsers do not provide all the necessary technologies and standards (such as JavaScript, CSS, and DOM) required to create usable AJAX applications on mobile devices. Increasingly, however, and as discussed earlier, many do. Opera Mobile and Mini(version 4), IE Mobile, Mozilla&#8217;s Minimo as well as browsers on the Nokia S60 and the iPhone, all run AJAX, albeit sometimes with limitations.</p>
<p>The mobile browsers listed above typically fall on mobile devices classified as smart phones or PDAs (or both). Even on these devices, some limitations of AJAX technologies on the devices can lead to issues. For example, JavaScript performance is quite poor on the first iPhone resulting in slow rendering of AJAX pages (on the new iPhone the performance should be much improved). Also, DOM manipulation and extensive JavaScript execution can tax the devices&#8217; CPU and memory—which can impact the device&#8217;s performance and quickly drain its power supply. But as the capabilities of mobile devices increase, the availability and use of AJAX in all its forms may also increase. In fact, mobile AJAX may actually help resolve some of the issues associated with mobile browsing. For example, AJAX can be used to make it appear as if the content loads faster by loading only the necessary parts of a page (typically much smaller), on a mobile device. Also of note, in September of 2007, the World Wide Web Consortium (W3C) and the OpenAJAX Alliance held a <a href="http://www.w3.org/2007/06/mobile-ajax" target="_blank"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">workshop on Mobile AJAX</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">. </span></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-deux/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Shuttleworth on Project Management</title>
		<link>http://molecularvoices.molecular.com/2008/shuttleworth-on-project-management/</link>
		<comments>http://molecularvoices.molecular.com/2008/shuttleworth-on-project-management/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 14:31:28 +0000</pubDate>
		<dc:creator>Craig Andrews</dc:creator>
		
		<category><![CDATA[Project Management]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=619</guid>
		<description><![CDATA[Mark Shuttleworth, of Thawte fortune and Ubuntu fame, has some (IMHO) neat ideas on how to manage software development efforts that may be interesting to spend a few human processing cycles considering.
http://lwn.net/Articles/292031
Despite the article being written for Free Software and Linux, I think it&#8217;s incredibly relevant to all development efforts - read it as if [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:e00ab8fe061536d30a40a45393a65454b0dddb80'><p>Mark Shuttleworth, of Thawte fortune and Ubuntu fame, has some (IMHO) neat ideas on how to manage software development efforts that may be interesting to spend a few human processing cycles considering.</p>
<p><a href="http://lwn.net/Articles/292031">http://lwn.net/Articles/292031</a></p>
<p>Despite the article being written for Free Software and Linux, I think it&#8217;s incredibly relevant to all development efforts - read it as if he&#8217;s talking about Molecular projects, and not Linux distributions.</p>
<p>Here are two key paragraphs:</p>
<blockquote><p>One of the key requirements that Shuttleworth sees is the need to &#8220;keep the trunk pristine&#8221;, by doing integration on the trunk and feature development on branches. Along with this is the need for more and better tests. While not necessarily believing in test-driven development, he certainly leans that way. In any case, all the tests should pass before committing to the trunk.</p>
<p>Many projects do not yet have an extensive test suite, but this needs to change. He quoted a Chinese proverb that &#8220;the best time to plant a tree is 20 years ago, the second best time is today&#8221;. He mentioned that he is working on a robot that controls the trunk of a development tree. Developers will request it to merge from a branch, so the robot merges the branch and runs all the tests. If the tests pass, it commits, otherwise it gets kicked back to the developer.</p></blockquote>
<p>This approach sounds pretty good to me.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/shuttleworth-on-project-management/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
