<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
    xmlns:admin="http://webns.net/mvcb/" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:content="http://purl.org/rss/1.0/modules/content/" 
    xmlns:atom="http://www.w3.org/2005/Atom">

    <channel>
        <title>Sencha Blog</title>
        <link>http://www.sencha.com/blog/</link>
        <description>
            Technical articles, company news, and customer spotlights from Sencha.
        </description>
        <dc:language>en-us</dc:language>
        <dc:creator>ed@sencha.com</dc:creator>
        <dc:rights>Copyright 2012</dc:rights>
        <dc:date>2012-02-01T16:00:36+00:00</dc:date>
        <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
        <atom:link href="http://www.sencha.com/blog/" rel="self" type="application/rss+xml" />

        
        <item>
        <title>Sencha Touch 2 Beta&#8212;Raising The Bar</title>
        <author>Ed Spencer</author>
        <description>
            Two years ago, we set out on a journey to make the web mobile. Today, we’re raising the bar with the release of Sencha Touch 2 Beta.
        </description>
        <link>http://www.sencha.com/blog/sencha-touch-2-raising-the-bar/</link>
        <content:encoded>
            <![CDATA[
                <p>Two years ago, we set out on a journey to make the web mobile. Today, we’re raising the bar with the release of Sencha Touch 2 Beta.</p>

	<p>Thank you to our community for your feedback during our sneak peaks with our Preview Releases. Your contributions in the forums, reporting bugs, adding feature requests, and your inspirational teamwork in the Q&amp;A threads have kept us focused on what’s really important to you&#8212;delivering quality. We’ve taken all your feedback and we’re proud to deliver a release that we hope will exceed your expectations. </p>

	<p><a class="button-link small inline arrow download" href="http://cdn.sencha.io/touch/sencha-touch-2-b1.zip"><span>Download Sencha Touch 2 Beta</span></a>&nbsp;&nbsp;&nbsp;<a class="more-icon" href="http://dev.sencha.com/deploy/sencha-touch-2-b1/release-notes.html">View Release Notes</a></p>

	<h3>What’s New? </h3>

	<p>With every major release, we strive to bake in the latest innovate approaches to help you create impressive applications.  And learning how to use these techniques is now easier than ever. </p>

	<h4><span class="caps">API</span> Documentation, Guides, and Examples</h4>

	<p>We’re investing a great deal of time in creating comprehensive documentation for Sencha Touch 2. Every major class now has a full introduction complete with code samples and how it fits into the wider context of your app. As well as class docs, we’re adding over <a href="http://docs.sencha.com/touch/2-0/#!/guide">20 brand new guides</a> covering everything from <a href="http://docs.sencha.com/touch/2-0/#!/guide/getting_started">getting started</a> through to <a href="http://docs.sencha.com/touch/2-0/#!/guide/building">building and deploying</a> your applications.</p>

	<p>On top of this, our documentation center now allows you to experiment with inline code editing.</p>

  <figure class="aligncenter">
    <a href="http://docs.sencha.com/touch/2-0/" target="_blank"><img src="http://img1.sencha.com/files/misc/touch-2-docs.jpg" alt="Sencha Touch 2 Docs" height="389" width="636"></a>
    <figcaption>Touch 2 Docs feature 20 new guides, code samples, and editable examples.<br />
<a class="more-icon" href="http://docs.sencha.com/touch/2-0/">Visit the Touch 2 Docs</a></figcaption>
  </figure>

	<p>We’re continuing to lead the way when it comes to innovation in our learning materials. We’re also proud to continue sharing all of the hard work we put into our documentation tools under the open source <span class="caps">JSD</span>uck project, a part of Sencha Labs.</p>

	<p><a href="http://ju.mp/senchajwf" target="_blank"><img class="alignright" src="http://img1.sencha.com/files/misc/jog-with-friends.jpg" alt="Jog with Friends, a new Facebook example app in Sencha Touch 2"height="335" width="220"></a></p>

	<h4>New Facebook Integration Example</h4>

	<p>We&#8217;re adding an example showcasing Sencha Touch&#8217;s seamless integration with the Facebook Graph <span class="caps">API</span>. Jog With Friends combines the Facebook JavaScript <span class="caps">SDK</span> on the client side with a 200 line node.js script backed with MongoDB on the server side. For a live demo, check out <a href="http://ju.mp/senchajwf" target="_blank">http://ju.mp/senchajwf</a> on a WebKit browser.</p>

	<h3>Foundational Improvements</h3>

	<p>Each major new version of Sencha Touch brings with it an opportunity to advance the state of what can be done with the mobile web. Here are just a few of the improvements we&#8217;ve made in Sencha Touch 2.</p>

	<h4>A New Class System</h4>

	<p>Sencha Touch 2 benefits from the supercharged class system that powers Ext JS 4. The upgraded system enables powerful new capabilities like dynamic loading, custom builds and new features like mixins. This makes developing your app easier from the first line of code all the way through to creating a minimal custom build that contains only the classes your app actually uses.</p>

	<p>As a developer though, the biggest improvement you’ll probably notice is the use of the new config system. Sencha Touch components have always been very configurable, but for version 2 we’ve made a big improvement to the consistency of the <span class="caps">API</span>.</p>

	<p>Every single configuration can now be set and updated in a very predictable way through the use of generated getter and setter functions. These functions always follow the same format and can be called at any time so once you know the config name you automatically know what function to call to update it:</p>

 <style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript"><span class="kw2">var</span> panel <span class="sy0">=</span> Ext.<span class="me1">create</span><span class="br0">&#40;</span><span class="st0">'Ext.Panel'</span><span class="sy0">,</span> <span class="br0">&#123;</span>
    html<span class="sy0">:</span> <span class="st0">'Sencha Touch 2 rocks'</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw3">alert</span><span class="br0">&#40;</span>panel.<span class="me1">getHtml</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// alerts the current value of the html config</span>
panel.<span class="me1">setHtml</span><span class="br0">&#40;</span><span class="st0">'It sure does'</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// changes your panel html to a new value</span></pre>

	<p>These functions always follow the same format, which makes learning the framework really easy. As well as the getter and setter functions we provide hook functions which makes it easy to create your own configs&#8212;check out the new <a href="http://docs.sencha.com/touch/2-0/#!/guide/class_system">class system guide</a> to find out more.</p>

	<h4><span class="caps">MVC</span> with History Support</h4>

	<p>One of the most frequently asked questions about web frameworks is how to structure your apps to make them easy and fun to create and maintain. With Sencha Touch 2, we’re bringing significant improvements in our <span class="caps">MVC</span> architecture, providing new functionality and a cleaner, leaner <span class="caps">API</span>.</p>

	<p>History support is baked right into Controllers in this new release, making it easy to add back button and deep linking support into your application. We have a full <a href="http://docs.sencha.com/touch/2-0/#!/guide/history_support">guide on history support</a> and you can see it in action on your device by checking out the upgraded Kitchen Sink example.</p>

	<p>Setting up routes is easier than ever&#8212;just define the urls your app needs to react to inside your controller along with a function to call when that url is detected. For example here’s how we can easily create an ecommerce application that shows product details when the user navigates to urls like http://myapp.com/#products/123:</p>

 <style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript">Ext.<span class="me1">define</span><span class="br0">&#40;</span><span class="st0">'MyApp.controller.Products'</span><span class="sy0">,</span> <span class="br0">&#123;</span>
    extend<span class="sy0">:</span> <span class="st0">'Ext.app.Controller'</span><span class="sy0">,</span>
    config<span class="sy0">:</span> <span class="br0">&#123;</span>
        routes<span class="sy0">:</span> <span class="br0">&#123;</span>
            <span class="st0">'products/:id'</span><span class="sy0">:</span> <span class="st0">'showProduct'</span>  <span class="co1">// It’s that easy</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>    
    showProduct<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span>id<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        console.<span class="me1">log</span><span class="br0">&#40;</span><span class="st0">'showing product '</span> <span class="sy0">+</span> id<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>

	<p>Check out the full guide on <a href="http://docs.sencha.com/touch/2-0/#!/guide/history_support">History Support</a> to find out how to add this to your app.</p>

	<h4>Multi Device Profiles</h4>

	<p>One of the challenges of a multi-device world is building an application that runs seamlessly across operating systems and screen sizes. With Sencha Touch 2 we provide a simple mechanism that enables you to write your app once then customize it for each device it runs on.</p>

	<p>This is achieved by configuring Device Profiles, which usually split your app into Phone and Tablet modes. Define all of the models, views, controllers and store that you want to reuse in your Ext.application and anything profile-specific inside the configuration for each Profile.</p>

	<p>For example, let&#8217;s say we&#8217;re creating a Facebook app and want to show a simple feed view on Phones and a detailed one on Tablets. We can start by telling our Application that it has two profiles:</p>

 <style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript">Ext.<span class="me1">application</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
    <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">'FB'</span><span class="sy0">,</span>
    profiles<span class="sy0">:</span> <span class="br0">&#91;</span><span class="st0">'Phone'</span><span class="sy0">,</span> <span class="st0">'Tablet'</span><span class="br0">&#93;</span><span class="sy0">,</span>
    controllers<span class="sy0">:</span> <span class="br0">&#91;</span><span class="br0">&#93;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>

	<p>Now we set up a Tablet Profile that&#8217;s activated when we detect that we&#8217;re running on a Tablet device:</p>

 <style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript">Ext.<span class="me1">define</span><span class="br0">&#40;</span><span class="st0">'FB.profile.Tablet'</span><span class="sy0">,</span> <span class="br0">&#123;</span>
    config<span class="sy0">:</span> <span class="br0">&#123;</span>
        controllers<span class="sy0">:</span> <span class="br0">&#91;</span><span class="st0">'Feed'</span><span class="br0">&#93;</span><span class="sy0">,</span>
        views<span class="sy0">:</span> <span class="br0">&#91;</span><span class="st0">'DetailedFeed'</span><span class="sy0">,</span> <span class="st0">'Timeline'</span><span class="br0">&#93;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
    isActive<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> Ext.<span class="me1">os</span>.<span class="kw1">is</span>.<span class="me1">Tablet</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>

	<p>And one for Phones:</p>

 <style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript">Ext.<span class="me1">define</span><span class="br0">&#40;</span><span class="st0">'FB.profile.Phone'</span><span class="sy0">,</span> <span class="br0">&#123;</span>
    config<span class="sy0">:</span> <span class="br0">&#123;</span>
        controllers<span class="sy0">:</span> <span class="br0">&#91;</span><span class="st0">'Feed'</span><span class="br0">&#93;</span><span class="sy0">,</span>
        views<span class="sy0">:</span> <span class="br0">&#91;</span><span class="st0">'SimpleFeed'</span><span class="sy0">,</span> <span class="st0">'Timeline'</span><span class="br0">&#93;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
    isActive<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> Ext.<span class="me1">os</span>.<span class="kw1">is</span>.<span class="me1">Phone</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>

	<p>When the app boots up, it will automatically figure out which Profile to activate and use its specialized models, views and controllers. Check out the <a href="http://docs.sencha.com/touch/2-0/#!/guide/profiles">Device Profiles guide</a> to find out how to use them in your app.</p>

	<h3>New Components&#8212;Component Data View and Navigation View</h3>

	<p>In addition to using the new XTemplates in your dataviews, we&#8217;re adding one of the most asked for features&#8212;using components in your data views.  You can now add buttons, or any components, to items.</p>

 <figure class="aligncenter">
  <img class="aligncenter" src="http://img1.sencha.com/files/misc/touch-2-component-dataview.jpg" alt="Touch 2 beta Component Dataview" height="100" width="636">
  <figcaption>The <a href="http://dev.sencha.com/deploy/sencha-touch-2-b1/examples/kiva/" target="_blank">KivaTouch demo app</a> uses a Component DataView to show funding progress.</figcaption>
 </figure>

	<p>Giving your users the proper visual cues helps your applications flow more naturally. With Sencha Touch 2, wiring up view transitions are now simpler than ever when using a Navigation view. If you choose to use a navigation view, navigational controls such as back buttons will be handled for you.  As an added bonus, we’re adding sexy animations when switching between cards.</p>

 <figure class="aligncenter">
  <iframe src="http://player.vimeo.com/video/36004489?title=0&amp;byline=0&amp;portrait=0&amp;color=4CC208" width="320" height="460" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
  <figcaption>Sencha Touch 2 Navigation View. <a class="more-link" href="http://vimeo.com/36004489" target="_blank">View video on Vimeo</a></figcaption>
 </figure>

	<h3>Dive In</h3>

	<p>Now that we’re in beta, we encourage you to dive right in.  We have a stable <span class="caps">API</span>, and we have more guides to help get you going quickly. If you’re looking to port your Sencha Touch 1.0 app we have a backwards-compatibility build that helps you through the migration process.  We also have <a href="http://docs.sencha.com/touch/2-0/#!/guide/upgrade_1_to_2">an upgrade guide</a> to help you out.</p>

	<p><strong>Note:</strong> those of you who have been using the Sencha Touch 2 Preview releases, be aware that we have cleaned up the builds we generate and as a result you may need to change which build of Sencha Touch you use. Most people should now be using sencha-touch-debug.js while developing, but for a complete list of the builds we generate see the <a href="http://docs.sencha.com/touch/2-0/#!/guide/building">builds guide</a>.</p>

	<h3>Features We&#8217;re Still Working On: Android <span class="caps">ICS</span> Performance</h3>

	<p>Sencha Touch 2 has significantly faster performance on Android 2.x browsers &#8211; with fast list scrolling being a particular point of pride. We&#8217;ve always treated the browser in Android 3.x as fundamentally broken, and do not plan to officially support it in Touch 2. We are currently working on improving performance in Android 4.0 &#8211; the Ice Cream Sandwich release. So far, we have found no acceptable mechanism to achieve fast and flicker-free animations. We have filed a bug with a simplified test case showing poor performance on a variety of mechanisms with the Android bug list. If you&#8217;d like to help prioritize this bug, please go to the bug page for <a href="http://code.google.com/p/android/issues/detail?id=24833">Android bug number 24833</a>, and &#8220;star&#8221; the bug by clicking on the star icon just before the headline. Solving this bug will help, not just Sencha Touch 2, but the entire web community developing content for the Android 4 browser. Feel free to add your own test cases as well!</p>

	<h3>Summary</h3>

	<p>We hope you enjoy playing around with the examples, and diving in to building your next great app.  It’s been a lot of hard work getting to this point, and we thank you for all the feedback.  Please keep sharing your ideas.</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Wed, 01 Feb 2012 16:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/sencha-touch-2-raising-the-bar/#date:16:00</guid>
        </item>
        
        <item>
        <title>Announcing Sencha Designer 2 Beta</title>
        <author>Luca Candela</author>
        <description>
            Sencha Designer 2 Beta is available for download! After many months of hard work, we are ready to unveil a tool that will change the way you work with our frameworks. Developers working with Sencha technologies now have an easy to use tool to increase their productivity. Designer 2 makes it easier than ever to build your applications using Ext JS and Sencha Touch.
        </description>
        <link>http://www.sencha.com/blog/sencha-designer-2-beta-announcement/</link>
        <content:encoded>
            <![CDATA[
                <h3>Sencha Designer 2 Now Supports Sencha Touch</h3>

<p><figure class="aligncenter">
<img src="http://img1.sencha.com/files/misc/designer-2-beta.jpg" alt="Designer 2 beta" height="371" width="500">
<figcaption>Sencha Designer 2 Beta features support for Sencha Touch and Ext JS JavaScript frameworks.<br><a class="more-icon" href="http://www.sencha.com/forum/showthread.php?152941-Sencha-Designer-2-Beta-Download-links">Download Sencha Designer 2 beta today</a></figcaption>
</figure></p>

<p>We’re thrilled to announce that Sencha Designer 2 Beta is available for download! Designer 2 makes it easier than ever to build desktop and mobile applications using Ext JS and Sencha Touch.</p>

<p>We&#8217;ve been working hard to bring you the next generation of Designer that will help you quickly build Ext JS and Sencha Touch applications. Experienced users will enjoy the productivity gains of the visual development environment, while folks new to Sencha will have a much easier time learning how to work with our frameworks and quickly build a complete application.</p>

<p>Ext JS and Sencha Touch are incredibly rich: they provide UI components, charting, controllers, models and data stores. In Designer 2, we make all of these features easily accessible and neatly organized to make it easier to discover all their capabilities.</p>

<h3>From Ext Designer 1 to Sencha Designer 2</h3>

<p>Designer 1.0 was the first step in tooling for Sencha frameworks. Designer 1 was a visual UI builder that made it easy to scaffold and design the UIs for your applications. You used it in conjunction with another code editing tool in order to build Ext JS 3 apps.</p>

<p>In Designer 1.2, we adding the ability to target multiple frameworks and also added support for Ext JS 4. You could continue to build views and stores utilizing all of the new widgets available in the new framework, like charts, enhanced stores, and more.</p>

<p>While you told us that you loved the features of Designer 1.x, we kept hearing that you wanted Designer to do more to help you build fully functional applications in a collaborative way.</p>

<h3>Designer 2: Easier, Faster, Stronger</h3>

<p>When started planning Designer 2, we wanted to improve every aspect of the tool. To achieve this goal, we adopted the mantra “Easier, Faster, Stronger.”</p>

<ul>
<li><p><strong>Easier</strong> because we believed that the learning curve of building Sencha apps could be shortened. In Designer 2, all components come with handy in-line documentation, and there are quick links to go deep into the API reference. More fundamentally, developers can try things quickly and get instant feedback. The Designer canvas is a live view giving you immediate feedback. Learning the dozens of components in Touch or Ext JS is now a breeze.</p></li>
<li><p><strong>Faster</strong> because traditionally, web based development proceeded like this: write some code, refresh the browser, check the changes. Over and over again. While better web debugging tools have come a long way, debugging and error checking is still a tedious and sometimes unpredictable process.</p>

<p>Designer 2 is different: all code generated by the tool is guaranteed to work out of the box. You can’t arrange components in a way that will break the frameworks’ conventions. Every property or event of every component is available in Designer, removing guesswork and eliminating digging through the API docs.</p>

<p>Moreover, the Project Inspector has been greatly enhanced. It’s the heart of your project, and it shows your views, controllers, models, and stores all in one place, along with information about the project’s structure. All components and their relationships are there where you can see and analyze them.</p>

<p>If you need to jump into a project somebody else started, the Designer Project Inspector makes it easy. At one glance, you can see the entire project and understand how the application is built without thumbing through pages of code.</p></li>
<li><p><strong>Stronger</strong> because Designer 2 helps you create well-structured applications from day one, and ensures that generated code follows best practices. Most (if not all) of the boilerplate code is generated for you, so you can focus on the code that really matters: the controller logic that’s at the core of your unique application.</p></li>
</ul>

<h3>What’s new in Designer 2?</h3>

<p>Designer 2 represents a significant leap ahead in functionality, and here is a brief list of what’s new and what changed since the previous version:</p>

<h4>Support for Sencha Touch 2</h4>

<p>This feature has consistently been the top request from our community, and now it’s here! Sencha Touch 2 is now a first-class citizen of Designer. Visual development of mobile web applications is now a reality. This beta includes the <a href="http://www.sencha.com/forum/announcement.php?f=90&amp;a=28">PR4 release of Sencha Touch 2</a>.</p>

<h4>Code editor</h4>

<p>Designer now includes a built-in editor so you can add your own code any time you want. You can toggle between the design view, which gives you access to Designer visual controls, and code view, where you write your JavaScript. The files are saved to .js files on the file system, so you can use your editor of choice, or the built-in editor in Designer.</p>

<h4>New Toolbox</h4>

<p>The component Toolbox has been expanded and improved: it now includes all the components you need to create a fully functional application like Controllers, Models and even a brand new store that connects to Sencha.io. We also worked to make the vast array of components more manageable by adding base categories. This allows you  to narrow down the selection quickly, and create your own to fit your personal workflow.</p>

<p><img class="alignright" src="http://img1.sencha.com/files/misc/mvc.png" alt="MVC in the Project Inspector" height="344" width="267"></p>

<h4>New Project Inspector</h4>

<p>The Project Inspector shows the entire application at a glance. The root Application node contains your launch function, while the Controller, View, Store and Model nodes help you keep things organized as you’re building an MVC application.</p>

<h4>Event Bindings</h4>

<p>There’s a new panel that displays all the Event Bindings available for a component, and you can use this to bring your UI to life. And when your application grows in scope, you can stay organized by moving your event bindings into a controller.</p>

<h4>Source control friendly file format</h4>

<p>Developers share code using source control, but developers using Designer 1 had a hard time doing that because of the monolithic nature of our project files. Designer 2 projects are better: gone is the single file archive (you still can package them that way for easy sharing via email). Now, each view, model, store is its own file. Designer 2 makes it easier to work in a project team.</p>

<h4>In-line documentation</h4>

<p>In Designer 2 every component, property and configuration comes with handy in-line documentation, and if you need more there are quick links to go deep in to the API reference.</p>

<h3>Caveats for the Beta Release!</h3>

<p>We’re excited to share with you our first beta of Designer 2. While we’re excited to see our community give it a whirl, it is still a beta, and there’s still some work left to do. In the following weeks the team will concentrate on two things:</p>

<ul>
<li>Further quality improvements of  the existing feature set</li>
<li>Improvements in the user experience and the UI design</li>
</ul>

<p>Certain features that were not quite ready for the beta have been disabled &#8211;  don’t worry they’ll be back soon. As of today’s beta, the most notable absence is packaging for mobile devices.</p>

<p>The coming weeks are going to be fundamental to make Designer 2 the application you’ve been waiting for, so we need your feedback. We will be running usability tests to make sure we catch bugs on our own before the official release, but if you find something that doesn’t work as you expected, or think you have an idea that would make the application better, go ahead and let us know. All feedback will be evaluated carefully.</p>

<p>If you’re local to the San Francisco Bay Area, and are interested in <strong>participating in the usability testing</strong> that we’re doing, we’d love to hear from you. <a href="https://docs.google.com/a/extjs.com/spreadsheet/viewform?hl=en_US&amp;formkey=dENNMDhVbkpBeXlnR2RGaVBJZzVuckE6MA#gid=0">Click here to apply for the usability test</a>.</p>

<p>Since the application is going to improve and change significantly before release, the Designer documentation for beta is very basic. We are releasing an introductory article to get you started, and more material will become available as Designer takes its final shape.</p>

<p>We don’t recommend that you adopt the beta of Designer 2 yet in your production environment. Designer 2 has an auto-update feature, so as we make updates, we’ll be pushing changes directly to the application, and you can choose to accept or decline the updates.</p>

<p><strong>To share your ideas</strong>, comments and critiques with us, please use the <a href="http://www.sencha.com/forum/forumdisplay.php?99-Sencha-Designer-Forums">Sencha Designer 2 forum</a>.</p>

<p><strong>To report bugs</strong>, please use the <a href="http://www.sencha.com/forum/forumdisplay.php?97-Sencha-Designer-2.x-Bugs">Designer 2 Bug Forum</a>.</p>

<h3>Promotions, pricing and availability</h3>

<p>We are updating pricing for the product at the launch date: individual copies of Designer will be $399, with discounts for 5 and 20 packs.</p>

<p>Special offer: buy an Ext Designer 1.x License today and take advantage of promotional pricing of $279. Plus, you&#8217;ll receive a free upgrade to Designer 2.x License when released. Hurry, this offer ends on March 31, 2012.</p>

<p>Upgrading: if you bought Ext Designer 1.0 after January 1st, 2012, you’re entitled to a free upgrade to Sencha Designer when it ships! In order to get your upgrade license please contact the email address <a href="mailto:designer.upgrade@sencha.com">designer.upgrade@sencha.com</a> and we will take care of everything for you.</p>

<p>If you purchased an Ext Designer 1.x license prior to January 1st, 2012, you can upgrade to Designer 2 for $199 from now until March 31, 2012. To take advantage of this offer please email us at <a href="mailto:designer.upgrade@sencha.com">designer.upgrade@sencha.com</a>. Note that after March 31, 2012, the upgrade price increases to $279.</p>

<p>Please note that Sencha Complete which will include Designer 2, will remain priced at $999.</p>

<p>So, go ahead, <a href="http://www.sencha.com/forum/showthread.php?152941-Sencha-Designer-2-Beta-Download-links">download the Designer 2 beta trial</a> or <a href="https://www.sencha.com/store/designer">purchase Ext Designer 1</a> from the Sencha Store, and share your experiences with us!</p>

                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Mon, 30 Jan 2012 18:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/sencha-designer-2-beta-announcement/#date:18:00</guid>
        </item>
        
        <item>
        <title>How to Embed Interactive CSS3 Animations in an iBook</title>
        <author>Luca Candela</author>
        <description>
            Like everybody else on the US west coast, this morning we woke up in a world where Apple is poised to transform the way we consume textbooks with the ability to easily publish interactive books through iBook Author. The Sencha team quickly found a way to do that using Animator, and so can you following a few easy steps!
        </description>
        <link>http://www.sencha.com/blog/how-to-embed-interactive-css3-animations-in-an-ibook/</link>
        <content:encoded>
            <![CDATA[
                <figure class="alignright" style="width:300px;">
        <a href="http://vimeo.com/35333974" target="_blank"><img src="http://img1.sencha.com/files/misc/play-video-animator-ibooks.jpg" alt="Sencha Animator animations playing in an Apple iBook" height="236" width="300"></a>
        <figcaption><a href="http://vimeo.com/35333974" target="_blank">Click through to see a video</a> of Sencha Animator animations playing in an Apple iBook.</figcaption>
    </figure>

	<p>Like everybody else on the US west coast, this morning we woke up in a world where Apple is poised to transform the way we consume textbooks. One of the compelling features of this new and exciting medium is the ability to easily publish interactive books through iBook Author.</p>

	<p>iBook Author lets you embed interactive content in your books to create more engaging experiences for learners, and our first thought here at the Sencha HQ was to try using Sencha Animator to create that interactive content.</p>

	<p>So after a few minutes of fiddling, we found a fairly straightforward way to embed an Animator project in an iBook.</p>

	<h3>Step 1: Preparation in Animator</h3>

	<p>Open a Sencha Animator project you&#8217;d like to place inside your iBook. Take a screenshot of the stage area to create a &#8220;cover&#8221; for the animation, and rename it &#8220;Default.png&#8221;. This cover image will be used to show the animation in the page when inactive. Make sure it&#8217;s the same size as the stage.</p>

    <figure class="aligncenter">
        <img src="http://src.sencha.io/636/http://img1.sencha.com/files/misc/Rocking_Boat.png" alt="Sencha Animator Rocking Boat project">
        <figcaption>Sencha Animator Rocking Boat project. See the animation and our original article, <a href="http://www.sencha.com/blog/rocking-the-boat-of-flash-with-css3-animations">Rocking the Boat of Flash with CSS3 Animations</a>.</figcaption>
    </figure>

	<p>Export the project as you normally would, then place your Default.png inside the output folder.</p>

	<h3>Step 2: A Little Hacking&#8230;</h3>

	<p>Now comes the tricky part: you need an &#8220;info.plist&#8221; descriptor file in your output folder, so we provided one ready for you in our project file available to <a href="#downloadLinks">download at the bottom of this article</a>.</p>

	<p>Edit the info.plist file to enter the dimensions of your animation, then the BundleName to match the export folder&#8217;s name (e.g. myExportFolder), and finally add the extension &#8220;.wdgt&#8221; to the folder.</p>

	<p>If you&#8217;re working in Mac OS X, the icon of the folder will change to that of a Dashboard widget. If you&#8217;re on Windows or Linux, you can create a widget but you will need Mac OS X Lion in order to complete the process, since iBook Author only runs on that version of Apple&#8217;s operating system.</p>

	<h3>Finishing Up in iBook Author</h3>

    <figure class="aligncenter">
        <img src="http://src.sencha.io/636/http://img1.sencha.com/files/misc/iBook_Author.png" alt="iBook Author and Sencha Animator in action">
        <figcaption>iBook Author and Sencha Animator in action. Download the project files below to get started.</figcaption>
    </figure>

	<p>Now that you have an animation file ready, you just need to add an <span class="caps">HTML</span> widget to your book, and drag the .wdgt file in the widget&#8217;s properties as we show in the screenshot.</p>

	<p><a name="downloadLinks" id="downloadLinks"></a> Now you&#8217;re ready to export your book and enjoy the results of your work! Of course, you&#8217;ll need the new iBooks Author app and Sencha Animator on your Mac. Download our demo Sencha Animator iBook project below to get started.</p>

	<ul>
		<li><a class="more-icon" href="http://cdn.sencha.io/animator/sencha-animator-ibook.zip">Download Animator-&gt;iBooks Project File</a></li>
		<li><a class="more-icon" href="http://www.sencha.com/products/animator/download/">Start your 30-day trial of Sencha Animator 1.1</a></li>
		<li><a class="more-icon" href="http://itunes.apple.com/us/app/ibooks-author/id490152466">Download iBooks Author from Apple</a> (Available for free on the Mac App Store)</li>
	</ul>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Thu, 19 Jan 2012 22:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/how-to-embed-interactive-css3-animations-in-an-ibook/#date:22:00</guid>
        </item>
        
        <item>
        <title>First Thoughts Learning Ext JS 4.1</title>
        <author>Ted Patrick</author>
        <description>
            I wanted to share my thoughts on learning Ext JS 4.1 from a developer new to Sencha. The article highlights my initial progress, perceptions, and discoveries in learning Ext JS.
        </description>
        <link>http://www.sencha.com/blog/first-thoughts-on-ext-js/</link>
        <content:encoded>
            <![CDATA[
                <p><img class="alignright rounded shadow" src="http://img1.sencha.com/files/misc/learning-extjs.jpg" alt="First Thoughts Learning Ext JS 4.1" height="180" width="240"> I wanted to share my thoughts on my progress learning Ext JS 4.1 as a developer new to Sencha. As an application developer I have used many different development environments and application frameworks throughout my career and whenever I learn something new I compare back to my experience. Overall I have been very impressed with Sencha frameworks as they provide a professional foundation to build an application atop.</p>

	<h3>Interpreted</h3>

	<p>The single hardest shift for me is embracing the interpreted nature of JavaScript within the Ext JS framework in general. While not new to interpreted systems, I personally expect compiler emitted errors/warnings/flags, syntax auto-completion, and strong typing for member variables, return types and assignments. Having come most recently from Java, I find that being shown errors and autocompletion as I type is a great productivity enhancement but these benefits are tied to the nature of a strongly typed and compiled language. The general lack of these facilities in working with JavaScript is really the first hurdle in moving to web technology. Truth is, as I got more comfortable with the interpreted nature of the the language, I quickly found myself enjoying the advantages:</p>

	<ul>
		<li>JavaScript&#8217;s flexibility is a double edged sword. The language&#8217;s freedom is a joy but you must use best practices to avoid common pitfalls.</li>
		<li>Modern browsers offer developers great insight into application behavior at runtime. I have found the Chrome developer Console and Debugger JavaScript tools to be invaluable.</li>
		<li>Ext JS uses JavaScript as a meta-language to provide deeper <span class="caps">OOP</span>/MVC/Class Loading/Mixin support is very elegant for larger scale application development. These facilities exist in very few frameworks and really differentiate Ext JS and Touch. The ability to extend components or leverage a clean <span class="caps">MVC</span> pattern within an application make it very developer friendly as a framework.</li>
		<li>Leveraging JavaScript object literals and <span class="caps">JSON</span> for data/component instantiation is very productive. The ability to load components remotely, define UI as objects at runtime, and leverage client layout templating is very powerful. The syntax of larger object literals using xtype takes some getting used to. I found myself formatting my code more than normal to avoid the dreaded missing comma errors deep within an object literal.</li>
		<li>Using the Eclipse <span class="caps">VJET</span> Plugin was a great productivity boost for JavaScript and Ext JS development. The plugin provides auto-completion for JavaScript and there are several open source syntaxes for Ext JS. Being able to see instances, warnings/errors, and in-context return types is a very pleasant addition based on my past experience. <a href="https://www.ebayopensource.org/index.php/VJET/HomePage"><span class="caps">VJET</span></a> <a href="http://www.ebayopensource.org/wiki/display/VJET/VJET+Ext+Js+Extension+-+Sencha"><span class="caps">VJET</span>+ExtJS</a></li>
	</ul>

	<h3>Ext JS &#8220;Standard Library&#8221;</h3>

	<p>Ext JS provides a foundational set of helper classes and methods to make building applications easier. I found that the Ext.Array, Ext.Date, Ext.String, Ext.Object, Ext.Loader classes make working with data very easy and generally simplify building applications. Every application will use these common libraries and having them included and integrated into the framework is great.</p>

 <style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript">Ext.<span class="me1">require</span><span class="br0">&#40;</span> <span class="br0">&#91;</span> <span class="st0">'widget.*'</span> <span class="sy0">,</span> <span class="st0">'layout.*'</span> <span class="sy0">,</span> <span class="st0">'Ext.data.*'</span> <span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="sy0">;</span> 
Ext.<span class="me1">Array</span>.<span class="me1">each</span><span class="br0">&#40;</span> <span class="br0">&#91;</span> <span class="nu0">1</span><span class="sy0">,</span> <span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">4</span> <span class="br0">&#93;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span> <span class="kw3">name</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span> console.<span class="me1">log</span><span class="br0">&#40;</span> <span class="kw3">name</span> <span class="br0">&#41;</span><span class="sy0">;</span> <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
Ext.<span class="me1">Object</span>.<span class="me1">getSize</span><span class="br0">&#40;</span> <span class="br0">&#123;</span> age<span class="sy0">:</span><span class="nu0">23</span> <span class="sy0">,</span> height<span class="sy0">:</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw3">name</span><span class="sy0">:</span><span class="st0">&quot;Ted&quot;</span> <span class="br0">&#125;</span> <span class="br0">&#41;</span><span class="sy0">;</span>  <span class="co1">//3</span></pre>

	<h3>Containers</h3>

	<p>Ext JS provides a rich set of containers (Ext.window.Window, Ext.panel.Panel, Ext.container.Container, Ext.grid.Panel, etc.) to allow developers to easily create nested views and more complex application logic. In Ext JS, containers&#8217; layout behavior is programmatic and allows you to set the behavior of a container at runtime to &#8216;vbox&#8217;, &#8216;hbox&#8217;, or any of the Ext.layout.container types. Additionally you can set sizes dynamically by assigning values to the &#8216;flex&#8217; property on items within a container.</p>

	<h3>Xtype</h3>

	<p>Ext JS provides a loosely typed data format called Xtype to allow you to pass trees of containers and controls as a single object. It is a very, very powerful technique and really makes building lots of UI components at all at once easy. In Flex and Android I used declarative <span class="caps">XML</span> for component initialization and layout but these are closely tied into compiler workflow. In an interpreted system, you want to leverage a format that is rapidly parsed and supports remote loading. As Xtype is a JavaScript Object Literal, it is parsed at the speed of the JavaScript engine in use. On both mobile and desktop targets, this is very fast. While you can create components independently, using xtype for component generation is much more productive once you get the hang of it. Here are 3 xtypes passed within an Array:</p>

 <style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript"><span class="br0">&#91;</span> <span class="br0">&#123;</span> xtype<span class="sy0">:</span> <span class="st0">'container'</span><span class="sy0">,</span> html<span class="sy0">:</span><span class="st0">'First Item'</span><span class="sy0">,</span> flex<span class="sy0">:</span><span class="nu0">1</span> <span class="br0">&#125;</span> <span class="sy0">,</span>
<span class="br0">&#123;</span> xtype<span class="sy0">:</span> <span class="st0">'splitter'</span> <span class="br0">&#125;</span> <span class="sy0">,</span>
<span class="br0">&#123;</span> xtype<span class="sy0">:</span> <span class="st0">'container'</span><span class="sy0">,</span> html<span class="sy0">:</span><span class="st0">'Second Item'</span><span class="sy0">,</span> flex<span class="sy0">:</span><span class="nu0">1</span><span class="sy0">,</span> maintainFlex<span class="sy0">:</span><span class="kw2">true</span> <span class="br0">&#125;</span> <span class="br0">&#93;</span></pre>

	<p>If this were assigned to a container&#8217;s &#8216;item&#8217; property, it would render a split view. I found this very simple and elegant, compared to the complexity in other frameworks.</p>

	<h3>Styling</h3>

	<p>I have styled components in several frameworks. In Ext JS, abstracting style properties as runtime loaded <span class="caps">CSS</span> for all components is very powerful. Better still, generating <span class="caps">CSS</span> from the provided <span class="caps">SASS</span>/Compass source formats makes building a global style change quite easy. In both Flex and Android, style is baked in at compile-time and is less flexible than a runtime interpreted model. While I now feel comfortable generating a base color change in Ext JS, it will take me some time to absorb the finer details of <span class="caps">CSS</span> styling of the components. This is easily one of the more complex areas of the framework and will take me time to fully understand. </p>

	<h3>Hello Sencha</h3>

	<p>Given this is my first real post on Ext JS on Sencha.com, I thought it would be good to post the simplest example possible. The example creates a window with an image inside. Feel free to paste into a local html file and open in a browser.</p>

 <style><!-- GeSHi could not find the language {LANGUAGE} (using path {PATH}) --></style><pre class="html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;Hello Sencha&lt;/title&gt;
    &lt;!--styles--&gt;
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://cdn.sencha.io/extjs/4.1.0.b1/resources/css/ext-all.css&quot;&gt;
    &lt;!--extjs 4.0.2--&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;http://cdn.sencha.io/extjs/4.1.0.b1/ext-all.js&quot;&gt;&lt;/script&gt;
    &lt;!--app--&gt;
    &lt;script type=&quot;text/javascript&quot;&gt;
      //define the application
      Ext.application(&#123;
        launch: function() &#123;
          //create a window
          var win = Ext.create( 'Ext.window.Window' , &#123;
            title: 'Hello Sencha',
            height: 285,
            width: 250,
            layout: 'fit',
            //add an image to the window by an xtype object
            items: &#123;
              xtype: 'image',
              src: 'http://www.sencha.com/files/blog/old/blog/wp-content/uploads/2010/06/sencha-logo.png'
            &#125;,
            listeners:&#123;
              beforehide: function( com, owner, opt )&#123;
                alert('hiding win');
              &#125;
            &#125;
          &#125;);
          //show the window
          win.show();
        &#125;
      &#125;);
    &lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;&lt;/body&gt;
&lt;/html&gt;</pre>

	<p>I will continue to document my journey learning Ext JS and Touch frameworks as I go. There is clearly a lot to learn and hopefully sharing my experience will help others new to Sencha. More to follow.</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Tue, 17 Jan 2012 19:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/first-thoughts-on-ext-js/#date:19:00</guid>
        </item>
        
        <item>
        <title>Sencha Animator 1.1 Now Available</title>
        <author>Luca Candela</author>
        <description>
            We’re excited to announce that the first minor release update for Sencha Animator is now available for everybody to download and use. In this update we focused on fixing bugs and we introduced a few new features and improvements that we hope will make working with Animator easier and more productive.
        </description>
        <link>http://www.sencha.com/blog/sencha-animator-1-1-now-available/</link>
        <content:encoded>
            <![CDATA[
                <p><img class="alignright shadow rounded" src="http://img1.sencha.com/files/misc/animator-1-1.jpg" alt="Sencha Animator 1.1 now available." height="90" width="120"> We are excited to announce that the first minor release update for Sencha Animator is now available. In addition to general bug fixes, we&#8217;re happy to introduce a few new features and improvements to make working with Animator easier and more productive.</p>

	<h3>Experimental support for Firefox 7+</h3>

	<p>Firefox recently introduced support for <span class="caps">CSS</span> animations, and we wanted to give our users access to animation on newer Firefox browsers. Animator now exports <code>-moz</code> as well as <code>-webkit</code> animations. If your customers use Firefox 7 and above, they can take advantage of this new Animator capability.</p></p>

    <figure class="aligncenter">
        <img src="http://img1.sencha.com/files/misc/firefox-support.png" alt="Firefox Support" height="170" width="495">
        <figcaption>Sencha Animator 1.1 has support for Firefox CSS3 animations</figcaption>
    </figure>

	<p>As we continue to work on support for Firefox, you may notice a few issues (e.g., div elements with gradients applied will fail to render). Improving Firefox support will be one of the areas we will focus on in coming updates.</p></p>

	<h3>A new color picker</h3>

    <figure class="aligncenter">
        <img src="http://img1.sencha.com/files/misc/Color_Picker.png" alt="New Color Picker" height="334" width="480">
        <figcaption>Sencha Animator 1.1 features a new color picker</figcaption>
    </figure>

	<p>This latest release of Animator makes selecting colors easier and gives users more control. The new color picker features separate hue, saturation, luminosity, and transparency scrollers with integrated preview to fine tune color selections. You can also use <span class="caps">RGB</span> values if you prefer to work in the <span class="caps">RGB</span> color space. Animator keeps both sets of values up to date seamlessly, so you can switch color spaces as your project demands it.</p>

	<h3>More workflow improvements</h3>

	<p>The new color picker is the most visible new feature but it is not the only one. On the basic UX front, new users can now create a Sencha ID without leaving the application; we hope this will make the experience of using Animator for the first time more convenient. To help users who work on smaller screens, we also added the ability to turn off the rulers around the main stage.</p>

	<p>We also took a look at how we could improve the editing experience in Animator&#8217;s stage. The application positions child objects relative to their parents, according to the rules of <span class="caps">CSS</span> positioning. This generates behaviors that at first sight might look strange for designers used to traditional graphic design packages. In the case of nesting objects inside other objects, this can make objects appear to be in the wrong place on the stage.</p>

	<p>The new version of Animator compensates for this, maintaining the child object&#8217;s position on the stage for ease of editing, while still preserving the correct <span class="caps">CSS</span> under the hood. This takes care of the majority of cases when objects are nested, but it won&#8217;t always work if extreme transformations have been applied to the objects.</p>

	<p>Let&#8217;s look at an example involving two objects to see how Animator accomplishes this. Object A is at x=100, y=100 on the stage. Object B is at x=300, y=300. According to the rules of <span class="caps">CSS</span> positioning, which position a child object relative to its parent, nesting Object A inside of Object B will make Object A jump to a stage position of x=400, y=400.</p>

	<p>Animator compensates for this during nesting by adjusting for the difference between the original positions of the two objects (300-100=200) when determining the new relative position of Object A. When Object A is nested inside Object B, Animator places the Object A child at a relative position of x=-200, y=-200 to place it in the same stage position that it was before nesting.</p>

	<p>Export has also been improved, with a new &#8220;split export&#8221; feature. The new version of Animator lets you split your export up, exporting <span class="caps">HTML</span>, Javascript, and <span class="caps">CSS</span> separately instead of exporting a single file with all code embedded inline. In addition, Animator exports now also work around some Android 2.x <span class="caps">CSS</span> issues with the implementation of fill mode for greater browser compatibility.</p>

	<h3>Bug fixes</h3>

	<p>We fixed a number of bugs mostly to address animation editing, automatic updating, a previous incompatibility with Mac OS X Snow Leopard, and export behavior. See the <a href="http://www.sencha.com/products/animator/changelog">changelog</a> for a complete list. We are serious about providing a trouble free experience in Animator, and we encourage you to report bugs in the <a href="http://www.sencha.com/forum/forumdisplay.php?65-Sencha-Animator-Bugs">Bug Forum</a>.</p>

	<h3>Press Play to start&#8230;</h3>

	<p>The Animator team hopes you will enjoy this update and that you will keep creating beautiful animations with our tool.</p>

	<p>For now, go ahead and update, either by accepting the update prompt you will get inside Animator on startup, or <a href="http://www.sencha.com/products/animator/download/">download Sencha Animator 1.1</a>, and show us what you can do with it.</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Thu, 12 Jan 2012 14:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/sencha-animator-1-1-now-available/#date:14:00</guid>
        </item>
        
        <item>
        <title>Sencha: The 2012 HTML5 Wishlist</title>
        <author>Michael Mullany</author>
        <description>
            It&apos;s that time of year, and we&apos;re once again publishing our HTML5 wishlist. Read on to find out what we&apos;re hoping to see happen in the world of web browsers and web standards.
        </description>
        <link>http://www.sencha.com/blog/sencha-the-2012-html5-wishlist/</link>
        <content:encoded>
            <![CDATA[
                <p><img class="alignright" src="/files/blog/old/blog/wp-content/uploads/2010/05/html5.png" alt="Our Top Ten HTML5 Wishes for 2012" height="90" width="120"> It&#8217;s that time of year, and we&#8217;re once again publishing our HTML5 wishlist. But before we do that,  let&#8217;s see how our <a href="http://www.sencha.com/blog/our-top-ten-html5-wishes-for-2011/">2011 wishes</a> went. On balance, we didn&#8217;t do so bad. Out of our ten wishes, four came through. Here are the HTML5 wishes that became reality in 2011. We wished for:</p>

	<ul>
		<li>A richer CSS3 effects toolbox; and lo there was <a href="https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html"><span class="caps">CSS</span> Filters</a>, a port of the sophisticated filters available in <span class="caps">SVG</span> to the <span class="caps">DOM</span>.</li>
		<li>High performance position: fixed for mobile browsers; and we were granted it in iOS 5&#8217;s Mobile Safari. Now we&#8217;re waiting for other devices to catch up.</li>
		<li>Pervasive <span class="caps">GPU</span> acceleration; and we were pleased to see the <a href="http://www.sencha.com/blog/blackberry-playbook-the-html5-developer-scorecard/">BlackBerry PlayBook</a> and <a href="http://www.sencha.com/blog/galaxy-nexus-the-html5-developer-scorecard/">Android 4.0</a> join iOS&#8217;s excellent implementation of accelerated graphics.</li>
		<li>Websockets stabilization: and we got a Christmas present of <a href="http://tools.ietf.org/html/rfc6455"><span class="caps">RFC</span> 6455</a> and the <a href="http://www.w3.org/TR/websockets/">W3C Candidate Recommendation</a> for the web sockets protocol and <span class="caps">API</span> respectively.</li>
	</ul>

	<p>But our other six wishes didn&#8217;t fare so well. There was only minor progress toward deeper device access on mobile browsers and developers continued to use native wrappers to access cameras and microphones. WebSQL stayed dead as a standards track technology (and its performance even decreased in iOS 5). We also saw slow progress on IndexedDB implementations. The rival HTML5 codec camps remained entrenched with little prospect of harmony, even as the mobile patent battles raged across global jurisdictions and institutions, and live debugging on mobile browsers remained a difficult task.</p>

	<p>In the &#8220;welcome surprise&#8221; category, Microsoft impressed us with its <a href="http://www.sencha.com/blog/ie10-preview-html5-first-look/">support for HTML5 in the IE10 preview</a>, showing a solid commitment to the latest HTML5 and CSS3 standards.  Finally, and disappointingly, many of WebKit&#8217;s nicest proprietary extensions, like <code>background-clip: text</code>, remained off the standards track and omitted from other browsers. </p>

	<p>So, looking forward to 2012, we&#8217;ve got a new top ten wish list for HTML5 and for the browser makers. Some of 2011&#8217;s top wishes make a comeback, but others are brand new. We don&#8217;t claim these are definitive, but a motley collection of what we think would be most interesting for developers creating the rich and responsive applications that HTML5 was built for.</p>

	<h3>10. <span class="caps">HTML</span> Media implementations</h3>

	<p>Although we got some support for photo uploads in Android, web browser support for media capture and other HTML5 media technologies remains elusive. As a result, mobile web developers, in particular, have to wrap their web apps in a shell to get device <span class="caps">API</span> access. Camera access is the #1 feature reason for HTML5 developers to deploy to native rather than web, and given Apple&#8217;s leadership in almost every other area of mobile web, it remains a glaring omission for Mobile Safari. </p>

	<h3>9. HTML5 audio quality</h3>

	<p>While long-playing HTML5 audio works in most places, short-form audio, particularly for the features that games need, is lacking. Synchronizing audio with video or animations, multi-channel and mixing are all features that developers want. There are a number of early stage drafts to create standards for richer media handling, so that&#8217;s encouraging. Perhaps by the end of the year, we&#8217;ll be looking at solid desktop support, at the very least, with some standardization in round 2 of working drafts. We wish.</p>

	<h3>8. Better Offline Caching</h3>

	<p>HTML5 cache manifests are great for basic offline application support, but they require developers to know in advance what their assets are, declare them in a file and link the file into their pages. Mobile browsers in particular have had idiosyncratic and occasionally buggy interpretations of cache manifests. So, we&#8217;re wishing for a more dynamic, easier caching mechanism, ideally one that has some JavaScript <span class="caps">API</span>s.</p>

	<h3>7. Web Intents: Standardization &amp; support</h3>

	<p>Web Intents are a great mechanism to allow web applications to hand off tasks to one another, without knowing in advance who and what the offloading web app is. Invented by Paul Kinlan from Chrome, and inspired by Android&#8217;s intents system, they&#8217;re a neat way to allow web applications to collaborate on tasks. We&#8217;re wishing for a speedy standards track draft and good interoperable Firefox and WebKit implementations by the middle of the year.</p>

	<h3>6. WebGL Everywhere</h3>

	<p>It&#8217;s here, it works, it&#8217;s gorgeous. We&#8217;re even supporting <a href="http://senchalabs.github.com/philogl/">a framework for WebGL</a>. It looks fantastic on desktop. Our (probably fruitless) wish for 2012 is that IE10 supports WebGL, and we get ubiquitous WebGL on mobile. With iOS planning to support WebGL only within iAds, at least for now, it looks like we might wait a while to get that broadly, but we&#8217;re wishing for it anyway. </p>

	<h3>5. IndexedDB</h3>

	<p>2011 put a stake through the heart of WebSQL (thanks to Mozilla&#8217;s leadership) but IndexedDB is not ubiquitous yet. On desktop, Safari has yet to ship it, and it&#8217;s not here on mobile. Until then, developers continue to roll their own shims on top of local storage and WebSQL to get cross-browser offline data storage. We&#8217;re wishing for IndexedDB everywhere this year. </p>

	<h3>4. Right-sizing images</h3>

	<p>Sencha.io src helps developers deliver the right image size to any mobile device, but in our opinion this is a neat solution for something that should be solved in standards.   <a href="http://my.opera.com/karlcow/blog/2011/12/08/responsive-images-and-transparent-content-negotiation-in-http">Karl Dubost from Opera</a> points out that there was a <a href="http://tools.ietf.org/html/rfc2295">proposal back in the day</a> to enable this at the <span class="caps">HTTP</span> layer. However, given today&#8217;s cloud environments where developers often dont get to tweak their web servers and vanilla <span class="caps">HTTP</span> is the only thing available, this won&#8217;t fly. It needs to be added to either <span class="caps">HTML</span> or <span class="caps">CSS</span>. We&#8217;re hoping the <a href="http://dev.w3.org/csswg/css4-images/Overview.src.html"><acronym title="!">CSS4</acronym> Images standard</a> now in &#8220;pre-draft&#8221; form will get some love and attention this year.</p>

	<h3>3. Contacts <span class="caps">API</span> </h3>

	<p>We&#8217;d like contacts access without having to use a shell <span class="caps">API</span>. So would lots of our developers. There&#8217;s a spec from Nokia and friends but too few implementations. </p>

	<h3>2. Background Services</h3>

	<p>We&#8217;d also like to see more capabilities for managing multiple resources and handling background tasks. Chrome, once again, is leading on implementing these OS-y type services. <a href="http://www.w3.org/TR/notifications/">Web notifications</a> are in working draft and we wish they get broader implementation this year. We&#8217;d also like to see server-sent events get the wake-up behavior that&#8217;s spec&#8217;d.</p>

	<h3>1. Better Mobile Browser Debugging</h3>

	<p>And for the second year in the row, we&#8217;re asking for better mobile browser debuggability and profiling. Chrome&#8217;s remote debugging feature has been made to run on BlackBerry PlayBook, there is no reason others can&#8217;t follow it. Scriptable debugging/profiling would greatly assist mobile application QA, something that&#8217;s currently a painful task in mobile web app (and framework <img src="/images/smileys/grin.gif" width="19" height="19" alt="grin" style="border:0;" /> ) development.</p>

	<p>So that&#8217;s it! We know lots of our wishes have to do with mobile, since that&#8217;s where new technologies get adopted and reach critical mass the fastest. But it&#8217;s also the environment that&#8217;s hardest to hack around shortcomings, since the iOS and Windows Phone environments are so tightly controlled. And there&#8217;s a much longer list of things that we could add here (better, easier crypto for one, WebCL and more) but we&#8217;ll stop here in the interests of brevity. What&#8217;s your favorite wish for 2012? Give us your feedback in the comments!</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Mon, 09 Jan 2012 16:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/sencha-the-2012-html5-wishlist/#date:16:00</guid>
        </item>
        
        <item>
        <title>Sencha Touch Spotlight: Nanocrowd</title>
        <author>Roderic March</author>
        <description>
            The new Nanocrowd Sencha Touch app helps you find great movies to watch instantly on your iPad. By knowing why people like things, we can make the process of finding movies faster, easier, and more fun. Read more about Nanocrowd.
        </description>
        <link>http://www.sencha.com/blog/sencha-touch-spotlight-nanocrowd/</link>
        <content:encoded>
            <![CDATA[
                <figure class="aligncenter">
    <a href="http://www.sencha.com/apps/nanocrowd/"><img class="rounded" src="http://img1.sencha.com/files/misc/sencha-touch-nanocrowd.jpg" alt="Sencha Touch Spotlight: Nanocrowd" height="496" width="636"></a>
    <figcaption>The new Nanocrowd app helps you find great movies to watch instantly on your iPad.<br />
<a href="http://www.sencha.com/apps/nanocrowd/" class="more-icon">View the Nanocrowd app in the App Gallery</a></figcaption>
  </figure>

	<p><a href="http://www.nanocrowd.com/">Nanocrowd</a> develops technology that understands why people like things. Our first use of this technology is helping people find movies they&#8217;ll enjoy. By knowing why people like things, we can make the process of finding movies faster, easier, and more fun.</p>

	<p>These are wild times to be in the movie business, and we have to remain flexible, moving quickly to new platforms. For example, with over 40 million iPads sold (and half of them being used to stream movies and television), the iPad has become a leader in mobile entertainment devices. To support this platform, we recently announced our first movie-search application designed for the iPad, built with Sencha Touch: <a href="http://search.nanocrowd.com/">search.nanocrowd.com</a>.</p>

	<h3>Why We Chose Sencha Touch</h3>

	<blockquote class="pullquote right">
		<p class="pullquote right"><span>&#8220;</span>We wanted to remain flexible and create a single code base that we could extend to other platforms.&#8221;</p>
	</blockquote>

	<p>Nanocrowd started life as a desktop application, so our challenge was to convert our movie recommendation website into a mobile movie-watching platform. Our development team didn&#8217;t have expertise in mobile or touch; and, even though we were building our first mobile application specifically for the iPad, we wanted to remain flexible and create a single code base that we could extend to other platforms.</p>

  <figure class="aligncenter">
    <a class="lightbox" href="http://img1.sencha.com/files/misc/Screenshot-1.png" title="Search and filter your favorite movies with Nanocrowd."><img src="http://src.sencha.io/500/http://img1.sencha.com/files/misc/Screenshot-1.png" alt="Search and filter your favorite movies with Nanocrowd."></a>
  </figure>

	<p>After evaluating several technologies, we found that Sencha Touch was the best fit for our needs. It took full advantage of HTML5 and CSS3, offering us the cross-platform framework we needed. We built a quick prototype and found it easy to learn. Most important, Sencha instantly put an elegant face on our mobile application.</p>

	<p>To develop our mobile app, we started with lists of channels and movies. To become an intuitive mobile application, it was crucial that we convert our desktop grids and scrolling lists into touch-centric scrolling lists. Sencha Touch made it easy to inject movie and channel data into a pane that had three independent scrolling lists, and the first piece of our application was done.</p>

  <figure class="aligncenter">
    <a class="lightbox" href="http://img1.sencha.com/files/misc/Screenshot-2.png" title="Detail view on Nanocrowd's iPad app."><img src="http://src.sencha.io/500/http://img1.sencha.com/files/misc/Screenshot-2.png" alt="Detail view on Nanocrowd's iPad app."></a>
  </figure>

	<p>We also needed to present a wealth of information about the movies our users selected. Sencha allowed us to create multimedia overlays which we could float over any other application pane. We created our &#8220;Movie details&#8221; overlay which includes a thumbnail image, a JavaScript tag cloud, text about the movie, and checkbox forms for flagging whether a movie has been seen or for clearing alerts.</p>

	<p>Finally, we wanted to create a fun trailer-viewing experience. Of course, we had to load the trailer for the movie users selected, but then we also wanted our users to be able to scroll through and watch the trailers for any of the movies in the channel. We created a new pane (with an elegant transition, naturally) that included an embedded YouTube viewer, thumbnails for &#8220;next&#8221; and &#8220;back&#8221; scrolling, and information about the movie and the channel.</p>

  <figure class="aligncenter">
    <a class="lightbox" href="http://img1.sencha.com/files/misc/Screenshot-3.png" title="Nanocrowd's movie trailers with HTML5 video."><img src="http://src.sencha.io/500/http://img1.sencha.com/files/misc/Screenshot-3.png" alt="Nanocrowd's movie trailers with HTML5 video."></a>
  </figure>

	<p>On this pane, we took full advantage of the HTML5 video display and controls, including not only pause and play but also pinch-zoom for full-screen viewing. These same controls and viewer will be available to us on any platform that supports HTML5. When users are ready to watch a movie, a simple sheet flies in, populated with more information from our database showing them where they can watch the movie. One click launches the website or application where they can watch their movie instantly on their iPad.</p>

	<p>Our decision to use Sencha wasn&#8217;t based on any single element, but rather on how comprehensive the framework is and how easy it is for us to make our applications feel both native and elegant.</p>

	<h3>Business Value of Using Sencha Touch</h3>

	<p>Sencha Touch enabled us to cross over from being a desktop web application to a touch and mobile application without extensive training or hiring. We appreciated how easy it was to get started with the framework&#8212;we had a prototype application up and running in a couple weeks and understood what it would take to build the real thing. The &#8220;Kitchen Sink&#8221; examples and code samples were consistent time-savers, as we frequently found just what we needed by snagging source code straight from the Sencha website. After finishing the prototype, we developed a rich, multimedia mobile application with about 6 person-months of development, all with well-designed elements that give our users a familiar touch experience.</p>

	<p>Perhaps even more important to our future is that we&rsquo;re relying on Sencha to solve problems and issues that arise with device OS upgrades and with new hardware platforms. In the coming year, we plan to release our applications on several different platforms, and not only will the application function well out of the box, but as cross-device browser issues arise with these new devices, we&rsquo;re depending on Sencha to address them.</p>

	<p>Finally, we continue to benefit from the Sencha team&#8217;s enthusiastic customer support. They are responsive and helpful in our coding efforts as well as getting us up-to-speed on the touch and mobile platform. As we&#8217;ve progressed, Sencha has become a valuable technology partner.</p>

	<h3>Our Advice to New Developers</h3>

	<p>Don&#8217;t worry about mastering the framework before you begin coding&#8212;the sooner you begin to prototype and write some code, the faster you&#8217;ll learn to take advantage of all the tools and support that is available. When we started, we thought we were building a prototype, but before we even realized it we&#8217;d developed pieces of our application. This prototype/experiment/build process has been very successful for us.</p>

	<p>There are two things we wish we&#8217;d done sooner. We were slow to take advantage of the theming capabilities in Sencha Touch. We thought we&#8217;d add them at the end, but it would&rsquo;ve been more effective and easier to build them in from the beginning. Be sure to spend some time working with theming sooner rather than later. Also, jump into the forums and establish yourself as an active participant as soon as you get started. Although we used the forums as a resource, we didn&#8217;t think we should contribute actively until we were &#8220;experts,&#8221; and we wish we&#8217;d participated more fully from the start.</p>

	<h3>Final Thoughts</h3>

	<p>Looking to the future of consumer applications, there will continue to be a variety of platforms and operating systems we&#8217;ll need to support. Our customers will be adding new &#8220;screens&#8221; where they&#8217;ll want to watch TV and movies and you know they&#8217;ll expect all of their devices to play nicely together.  By developing in Sencha Touch, we&rsquo;re building a foundation that we can extend to those platforms as they emerge and change.</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Mon, 19 Dec 2011 16:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/sencha-touch-spotlight-nanocrowd/#date:16:00</guid>
        </item>
        
        <item>
        <title>Sencha Learn Roundup</title>
        <author>Ted Patrick</author>
        <description>
            We&apos;re constantly updating Sencha Learn with new content for many of our products. Read on to find out what you might&apos;ve missed.
        </description>
        <link>http://www.sencha.com/blog/sencha-learn-roundup/</link>
        <content:encoded>
            <![CDATA[
                <p>We&#8217;re constantly updating the Sencha Learn section with new content, here is some great content you might have missed:</p>

	<h3>New Tutorials for Ext JS 4 and Sencha Touch 2</h3>

  <div class="clearing">

	<p><a href="/learn/upgrading-to-sencha-touch-2-pr2/"><img class="shadow rounded alignleft" src="http://img1.sencha.com/files/misc/upgrade-to-touch-2.png" alt="thumbnail for Upgrading to Sencha Touch 2 PR2 Tutorial on Sencha Learn" height="90" width="120"></a></p>

	<p>With the <a title="Sencha Touch 2.0 PR3 now available" href="http://www.sencha.com/forum/announcement.php?f=91&amp;a=17">preview of Sencha Touch 2 available</a>, it is a great time to explore the <span class="caps">API</span>s and prepare to upgrade your existing applications. In this article from our newsletter, <a href="http://www.sencha.com/learn/upgrading-to-sencha-touch-2-pr2">Upgrading to Sencha Touch 2 PR2</a>, we take a simple existing example app&#8212;the Touch 1 CityBars guide&#8212;and explore what is required to make it compatible with the Touch 2 PR2 release.</p>

  </div>
  <div class="clearing">

	<p><a href="http://www.sencha.com/learn/sencha-class-system"><img class="shadow rounded alignleft" src="http://img1.sencha.com/files/misc/sencha-class-system-thumb.jpg" alt="The Sencha Class System" height="90" width="120"></a></p>

	<p>Following up from his highest-rated SenchaCon talk, Jacky Nguyen prepared a great tutorial on <a href="http://www.sencha.com/learn/sencha-class-system">the Sencha Class System</a> within Ext JS 4 and Sencha Touch 2. Both frameworks use the classes to manage dependencies, improve reuse, and provide rich features commonly found in class-based languages. Developers writing code using Ext JS 4 and Touch 2 can inherit from internal classes in the frameworks and make their own code object-oriented.</p>

  </div>
  <div class="clearing">

	<p><a href="/learn/sencha-touch-2-class-system/"><img class="shadow rounded alignleft" src="http://b.vimeocdn.com/ts/212/548/212548384_200.jpg" alt="thumbnail for Sencha Touch 2 Class System Screencast on Sencha Learn" height="90" width="120"></a></p>

	<p>Community member Jay Garcia has posted his own take on the Sencha Touch 2 Class System, which you can find as an 11 minute screencast in this <a href="http://www.sencha.com/learn/sencha-touch-2-class-system">contributed piece to Sencha Learn</a>.</p>

  </div>
  <div class="clearing">

	<p><a href="http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-3"><img class="shadow rounded alignleft" src="http://www.sencha.com/img/20110615-architecting-your-app-in-ext-js-4.png" alt="Ext JS 4 tutorial by Tommy Maintz" width="120"></a></p>

	<p>Tommy Maintz continues his Ext JS 4 <span class="caps">MVC</span> series of articles. In the previous two articles, he explored architecting a Pandora-style application using the new features of Ext JS 4. In the third installment, he implements controller logic inside of the application&#8217;s <span class="caps">MVC</span> architecture. Catch up with <a href="http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-1">Part 1</a> and <a href="http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2">Part 2</a> if you haven&#8217;t already. Or go straight to Part 3 of <a href="http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-3">Architecting Your App in Ext JS 4</a>.</p>

  </div>

	<h3>New Tutorials for Ext <span class="caps">GWT</span> 3 Beta</h3>

  <div class="clearing">

	<p><a href="/learn/running-ext-gwt-2-and-3-together/"><img class="shadow rounded alignleft" src="http://img1.sencha.com/files/misc/ext-gwt-3-and-2.png" alt="thumbnail for Running Ext GWT 2 and 3 Together Guide on Sencha Learn" height="90" width="120"></a></p>

	<p><a href="http://www.sencha.com/blog/ext-gwt-3-0-beta-1-available">Ext <span class="caps">GWT</span> 3 Beta is now available</a>! To allow a smooth transition from Ext <span class="caps">GWT</span> 2 to 3, Ext <span class="caps">GWT</span> lets you include both v2 and v3 components in the same application. Ext <span class="caps">GWT</span> Team Lead Darrell Meyer explains how to <a href="http://www.sencha.com/learn/running-ext-gwt-2-and-3-together">run Ext <span class="caps">GWT</span> 2 and 3 together</a> in the same app.</p>

  </div>
  <div class="clearing">

	<p><a href="http://www.sencha.com/learn/ext-gwt-3-declarative-markup-with-uibinder"><img class="shadow rounded alignleft" src="/img/learn-Tutorial.png" alt="Ext GWT 3 Declarative Markup with UiBinder" height="90" width="120"></a></p>

	<p>Our newest Ext <span class="caps">GWT</span> team member Justin Hickman wrote an interesting article on <a href="http://www.sencha.com/learn/ext-gwt-3-declarative-markup-with-uibinder">Ext <span class="caps">GWT</span> 3 Declarative Markup with UiBinder</a>. UiBinder support has been one of the major driving factors for many of the <span class="caps">API</span> changes in Ext <span class="caps">GWT</span> 3.0.</p>

  </div>

	<h3>Catch up with Ext Designer &amp; Sencha Animator</h3>

  <div class="clearing">

	<p><a href="/learn/build-a-car-store-with-ext-designer-1-2-and-ext-js-4/"><img class="shadow rounded alignleft" src="http://www.sencha.com/img/20110725-designer-1-2.png" alt="thumbnail for Build a Car Store with Ext Designer 1.2 and Ext JS 4 Tutorial on Sencha Learn" height="90" width="120"></a></p>

	<p>Check out this tutorial for <a href="http://www.sencha.com/learn/build-a-car-store-with-ext-designer-1-2-and-ext-js-4">building a Car Store with Ext Designer 1.2 and Ext JS 4</a>. This article takes the previous “car store” sample project, upgrades it to Ext JS 4, while adding new JavaScript charts.</p>

  </div>
  <div class="clearing">

	<p><a href="/learn/animator-guided-tour/"><img class="shadow rounded alignleft" src="http://img1.sencha.com/files/misc/sencha-animator-1.png" alt="thumbnail for Animator Guided Tour Guide on Sencha Learn" height="90" width="120"></a></p>

	<p>If you haven&#8217;t seen the new Sencha Animator (which recently hit 1.0, and <a href="http://www.sencha.com/products/animator/animator-50/">is on special for Flash developers</a>), get familiar with our <a href="http://www.sencha.com/learn/animator-quickstart/">Quick Start</a> and <a href="http://www.sencha.com/learn/animator-guided-tour/">Guided Tour</a>. Our guided tour provides a brief introduction to Animator functionality and suggests exercises to help you learn your way around the tool.</p>

  </div>

	<p>If any of these articles are a surprise to you, <a href="#marketoEmailForm-blog">sign up for our newsletter</a> to get them earlier. Get started now, and happy learning!</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Thu, 15 Dec 2011 18:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/sencha-learn-roundup/#date:18:00</guid>
        </item>
        
        <item>
        <title>Introducing Siesta: A Testing Tool for Ext JS</title>
        <author>Mats Bryntse</author>
        <description>
            Siesta is a new unit testing framework for Ext JS and other JavaScript code. Testing Ext JS, or any JavaScript&#45;centric web framework, can be difficult because the available tools are not really suited for the task. Most popular web UI testing tools don’t offer enough help unless your application uses simple static HTML pages. This is where Siesta is different from the rest, because its top priority is Ext JS testing.
        </description>
        <link>http://www.sencha.com/blog/introducing-siesta-a-testing-tool-for-ext-js/</link>
        <content:encoded>
            <![CDATA[
                <p><a href="http://www.bryntum.com/products/siesta/" target="_blank"><img class="alignright" src="http://img1.sencha.com/files/misc/siesta-logo.png" alt="Siesta logo" height="105" width="250"></a> In a previous guest post I described how we upgraded Ext Scheduler to Ext JS 4. As I mentioned then, one key factor that greatly simplified our upgrade was unit testing. While it may sound like an obvious thing to do, unit testing a UI generated by JavaScript is not as trivial as unit testing your server code.</p>

<p>For us, about midway through our upgrade, we realized that we badly needed a tool to help us verify that what used to work in the Ext JS 3 version still worked in the Ext JS 4 version. Doing the testing manually for each feature and API method would simply have taken way too much of our time. After evaluating a few popular options, we realized that none really fit our needs, so we started to design and write our own tool: <a href="http://www.bryntum.com/products/siesta/" target="_blank">Siesta</a>. Siesta can help you test plain JavaScript or code built with popular JS frameworks such as Ext JS or NodeJS.</p>

<p>But before we get into the details of Siesta, let’s take a step back and give some more background.</p>

<h3>Why testing JavaScript UIs is hard</h3>

<p>Testing Ext JS, or any other JavaScript centric UI framework, is hard because the available tools are not really suited for the task. When it comes to DOM and user interaction testing, most popular web UI testing tools don’t offer enough help unless your application uses simple static HTML pages. Using Ext JS, the HTML markup is usually generated by JavaScript code, meaning that you cannot safely rely on pixel coordinates, element IDs or XPath/CSS selectors. Brittle tests become very time consuming, if you have to update them every time that you make a slight change to your UI. A tool to test Ext JS must know about Ext JS and make use of its power. This is where Siesta is different from the rest, because its top priority is Ext JS testing.</p>

<h3>What we wanted from a test tool</h3>

<p>There are a few underlying reasons why we decided to write our own tool. Here are the main features we needed in a good Ext JS test tool:</p>

<ul>
	<li><strong>Write tests in JavaScript</strong> — we don’t want to have to learn a new language to write tests.</li>
	<li><strong>Automatable</strong> — we should not have to open a browser to run our tests</li>
	<li><strong>Extensible</strong> — we should be able to easily add our own assertion methods and abstractions.</li>
	<li><strong>Optimized for Ext JS</strong> — it should offer high level abstractions to assist with Ext JS testing.</li>
	<li><strong>Simple and user friendly UI</strong> — low learning curve, should be very easy to get started</li>
</ul>

<p>Together, we believe these features provide a very powerful testing tool. Let’s take a peek at the Siesta UI. Below you can see the two main panels of Siesta: The left hand side holds the test suite tree, and the right panel shows the test assertion list for one of the recently executed tests.</p>

  <figure class="aligncenter">
      <a class="lightbox" href="http://img1.sencha.com/files/misc/siesta-ui.png"><img src="http://src.sencha.io/636/http://img1.sencha.com/files/misc/siesta-ui.png" alt="Siesta user interface"></a>
      <figcaption>The Siesta UI. Click to view larger.</figcaption>
  </figure>

<h3>How to write a simple Siesta test.</h3>

<p>Let’s look at how to write a simple Hello World test. It would look something like this:</p>

<style>/**
* GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
* (http://qbnz.com/highlighter/ and http://geshi.org/)
*/
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript">StartTest<span class="br0">(</span><span class="kw2">function</span><span class="br0">(</span>test<span class="br0">)</span> <span class="br0">{</span>
  <span class="kw2">var</span> myTextField <span class="sy0">=</span> Ext.<span class="me1">create</span><span class="br0">(</span><span class="st0">"Ext.form.TextField"</span><span class="sy0">,</span> <span class="br0">{</span>
      renderTo <span class="sy0">:</span> Ext.<span class="me1">getBody</span><span class="br0">(</span><span class="br0">)</span>
  <span class="br0">}</span><span class="br0">)</span><span class="sy0">;</span>
&nbsp;
  test.<span class="me1">click</span><span class="br0">(</span>myTextField<span class="br0">)</span><span class="sy0">;</span>
&nbsp;
  test.<span class="me1">type</span><span class="br0">(</span>myTextField<span class="sy0">,</span> <span class="st0">'Hello world'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
      test.<span class="kw1">is</span><span class="br0">(</span>myTextField.<span class="me1">getValue</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">,</span> <span class="st0">'Hello world'</span><span class="sy0">,</span> <span class="st0">'We did it!'</span><span class="br0">)</span><span class="sy0">;</span>
  <span class="br0">}</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span><span class="br0">)</span><span class="sy0">;</span></pre>

<p>A test starts in its StartTest method, which is similar to how you use Ext.onReady in your application. A text field is created and then typed into using the type() method. This method operates asynchronously and in the provided callback function we simply assert that the text field value is what we expect it to be — “Hello world”. When running this and enabling the “View DOM” mode, this is what you see:</p>

  <figure class="aligncenter">
      <img src="http://img1.sencha.com/files/misc/siesta-output.png" alt="Siesta output after running a simple test">
      <figcaption>Siesta output after running a simple test</figcaption>
  </figure>

<p>Since Siesta can be automated easily using tools like Selenium or the excellent Phantom JS, you could just as well run the test above on the command line. You would then see the following output:</p>

  <figure class="aligncenter">
      <img src="http://img1.sencha.com/files/misc/siesta-command-line.png" alt="Siesta Command Line">
      <figcaption>Siesta Command Line</figcaption>
  </figure>

<p>Even complex tests are made trivial by Siesta, for example testing moving, resizing and closing an Ext.Window:</p>

<p><notextile>
<style>/**
* GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
* (http://qbnz.com/highlighter/ and http://geshi.org/)
*/
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style></notextile></p><pre class="javascript">StartTest<span class="br0">(</span><span class="kw2">function</span><span class="br0">(</span>t<span class="br0">)</span> <span class="br0">{</span>
  <span class="kw2">var</span> win <span class="sy0">=</span> <span class="kw2">new</span> Ext.<span class="me1">Window</span><span class="br0">(</span><span class="br0">{</span>
      height <span class="sy0">:</span> <span class="nu0">200</span><span class="sy0">,</span>
      width <span class="sy0">:</span> <span class="nu0">200</span><span class="sy0">,</span>
      <span class="co1">// Set window position to known state</span>
      x     <span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">,</span>
      y     <span class="sy0">:</span> <span class="nu0">0</span>
  <span class="br0">}</span><span class="br0">)</span><span class="sy0">;&lt;/</span>p<span class="sy0">&gt;</span>
&nbsp;
  win.<span class="me1">show</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
&nbsp;
  t.<span class="me1">ok</span><span class="br0">(</span>win.<span class="me1">rendered</span><span class="sy0">,</span> <span class="st0">'The window is rendered'</span><span class="br0">)</span><span class="sy0">;</span>
&nbsp;
  t.<span class="me1">hasPosition</span><span class="br0">(</span>win<span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="st0">'Correct initial position'</span><span class="br0">)</span><span class="sy0">;</span>
  t.<span class="me1">hasSize</span><span class="br0">(</span>win<span class="sy0">,</span> <span class="nu0">200</span><span class="sy0">,</span> <span class="nu0">200</span><span class="sy0">,</span> <span class="st0">'Correct initial size'</span><span class="br0">)</span><span class="sy0">;</span>
&nbsp;
  <span class="co1">// Use component query to drag the header 20 px right/down</span>
  t.<span class="me1">drag</span><span class="br0">(</span>win.<span class="me1">down</span><span class="br0">(</span><span class="st0">'header'</span><span class="br0">)</span><span class="sy0">,</span> <span class="kw2">null</span><span class="sy0">,</span> <span class="br0">[</span><span class="nu0">20</span><span class="sy0">,</span> <span class="nu0">20</span><span class="br0">]</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
      t.<span class="me1">hasPosition</span><span class="br0">(</span>win<span class="sy0">,</span> <span class="nu0">20</span><span class="sy0">,</span> <span class="nu0">20</span><span class="sy0">,</span> <span class="st0">'Window could be moved to new position'</span><span class="br0">)</span><span class="sy0">;</span>
&nbsp;
      <span class="co1">// Use regular CSS selector to drag the east resize handle 20 px to the right</span>
      t.<span class="me1">drag</span><span class="br0">(</span>win.<span class="me1">getEl</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">down</span><span class="br0">(</span><span class="st0">'.x-resizable-handle-east'</span><span class="br0">)</span><span class="sy0">,</span> <span class="kw2">null</span><span class="sy0">,</span> <span class="br0">[</span><span class="nu0">20</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">]</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
          t.<span class="me1">hasSize</span><span class="br0">(</span>win<span class="sy0">,</span> <span class="nu0">220</span><span class="sy0">,</span> <span class="nu0">200</span><span class="sy0">,</span> <span class="st0">'Size increased'</span><span class="br0">)</span><span class="sy0">;</span>
&nbsp;
          t.<span class="me1">click</span><span class="br0">(</span>win.<span class="me1">down</span><span class="br0">(</span><span class="st0">'tool[type=close]'</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span>
&nbsp;
          t.<span class="me1">notOk</span><span class="br0">(</span>win.<span class="me1">el</span>.<span class="me1">dom</span><span class="sy0">,</span> <span class="st0">'The dom element of the window is gone'</span><span class="br0">)</span><span class="sy0">;</span>
      <span class="br0">}</span><span class="br0">)</span><span class="sy0">;</span>
  <span class="br0">}</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span><span class="br0">)</span><span class="sy0">;</span></pre>


<h3>What unit testing can do for your codebase</h3>

<p>Testing your code brings lots of advantages, perhaps the biggest one is that it increases your confidence in your codebase. How do you <strong>know</strong> your code actually works? How do you know if a small change in the core of your application is safe or if it breaks some feature? The only way is to actually manually verify each and every feature of your system—but that’s not realistic unless you have a test suite.</p>

<p>There are other advantages that are definitely worth thinking about: </p>

<ul>
	<li>You will save lots of time if you can automate your cross-browser testing prior to pushing out a new release of your application. Doing this will move the quality of your releases to a whole new level.</li>
</ul>

<ul>
	<li>If you use a write-tests-first approach, you are forced to think about your spec and requirements one extra time, before even writing a single line of code.</li>
</ul>

<ul>
	<li>Unit tests help you find tightly coupled code. If you cannot test component A, without also creating a component B and C, then you should probably refactor your code.</li>
</ul>

<ul>
	<li>Siesta can automatically detect global variable leaks for you by analyzing the window at the end of a test.</li>
</ul>

<p>Another advantage, especially for custom components, is that unit tests provide real usage examples for your APIs, which is like extra documentation built into your project.</p>

<p>When refactoring your code or when upgrading the underlying Ext JS version of your application, it is a huge plus to have a test tool to help you verify the state of your application. Or as someone wrote on Twitter recently: “Without unit tests you’re not refactoring. You’re just changing sh—”.</p>

<p>That is why, for big systems without a test suite, programmers are often afraid of refactoring, and instead only make minor cosmetic changes on the surface, patching here and there. As a result, such systems accumulate a lot of cruft, making further development much more costly.</p>

<h3>Summing it up…</h3>

<p>I hope this post has given you an idea of what Siesta is and how you can benefit from using it. We still have many features to implement. In the next couple of months we’ll be adding support for Sencha Touch testing, code coverage, performance benchmarking, and lots more. I’d like to invite everyone to join our forums and try Siesta. We are constantly looking for new ideas and ways to improve it, so please let your voice be heard in our <a href="http://bryntum.com/forum">community forums</a>.</p>

                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Wed, 14 Dec 2011 13:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/introducing-siesta-a-testing-tool-for-ext-js/#date:13:00</guid>
        </item>
        
        <item>
        <title>Android&#8212;Ice Cream Sandwich: The HTML5 Developer Scorecard</title>
        <author>Aditya Bansod</author>
        <description>
            As part of our series on the HTML5 capabilities of new mobile platforms, today we look at the Samsung Galaxy Nexus, the first device to ship with Android 4.0, aka Ice Cream Sandwich. Will Android 4.0 be a major step forward?
        </description>
        <link>http://www.sencha.com/blog/galaxy-nexus-the-html5-developer-scorecard/</link>
        <content:encoded>
            <![CDATA[
                <figure class="aligncenter">
        <img src="http://img1.sencha.com/files/misc/sencha-samsung-galaxy-nexus.jpg" alt="Samsung Galaxy Nexus" height="587" width="636">
        <figcaption>As part of <a href="http://www.sencha.com/blog/category/html5-developer-scorecard">our continuing series</a>, we ran the new Galaxy Nexus through our tests to see how it stacks up as an HTML5 app platform.</figcaption>
    </figure>

	<p>As part of our continuing series on the HTML5 capabilities of new mobile platforms, today we&#8217;re taking a look at the Samsung Galaxy Nexus, the first device to ship with Android 4.0, aka Ice Cream Sandwich. We&#8217;ve been hearing rumors over the last few months about the <a href="http://androidandme.com/2011/10/news/google-chrome-is-finally-coming-to-an-android-device-near-you/">involvement</a> of the Chrome team in Android 4, so we had our hopes up that the browser would be a major step forward. In the past, we&#8217;ve reviewed Android 2.x (Gingerbread) devices, like the <a href="http://www.sencha.com/blog/samsung-galaxy-android-tablet-the-html5-developer-scorecard/">Galaxy Tab</a> and Android 3 (Honeycomb) devices, and the <a href="http://www.sencha.com/blog/motorola-xoom-the-html5-developer-scorecard/">Motorola Xoom</a> &#8212;and have been disappointed by the performance and correctness of the browsers.</p>

    <blockquote class="pullquote" style="width:265px;">
        <p><span>&ldquo;</span>Ice Cream Sandwich is a major step forward for the Android Browser, but still falls short of iOS 5.&rdquo;</p>
    </blockquote>

	<p>After putting the Galaxy Nexus through our test wringer, we can say that Ice Cream Sandwich is a major step for the Android browser. However, it still falls short of iOS 5. It&#8217;s a solid browser for normal page browsing and it adds major new features that support most of the HTML5 spec. It also has taken a big step forward in correctness of rendering, which is a welcome change for people who want to push their mobile browsers to the limit. </p>

	<h3>Our First-Look &#8220;Methodology&#8221;</h3>

	<p>Our HTML5 scorecard consists of a series of tests aimed to help mobile web developers understand new devices and new form factors as they come to market. We test in a number of areas, namely JavaScript performance, HTML5/CSS3 features, rendering performance and rendering accuracy. To get there, we use a variety of tests, including Modernizer, Acid3, SunSpider, Sencha Animator demos and our Sencha Touch Kitchen Sink.</p>

	<h3>Acid3 and Modernizr</h3>

	<p>The Galaxy Nexus scores a perfect 100/100 on the <a href="http://acid3.acidtests.org/">Acid3</a> test, just like Android 3. However, a close look at the Acid3 results reveals that there are still rendering artifacts. In the top right of the test image there is a telltale faint red/pink box which should not be there, since Acid3 requires pixel-for-pixel of the reference image. In practice, this won&#8217;t impact web browsing or web development much, but it&#8217;s a bit of fit-and-finish that &#8220;we&#8217;re not quite there yet&#8221; on Android.</p>

	<p>We then turned to <a href="http://www.modernizr.com/">Modernizr</a>, one of our favorite tools to look under the hood of a browser. This time, we used the implementation of Modernizr on <a href="http://www.haz.io">haz.io</a> which provides a clean and easy way to look at Modernizer results. The verdict?  Ice Cream Sandwich offers very good HTML5 support! Font-face, geo-location, and full support for the CSS3 suite. Support for the various CSS3 effects is probably what we&#8217;re most excited about: animations, reflections, 2D and 3D transformations, as well as transitions are all supported. For web developers, you can finally rely on HTML5 in Android 4.0 to build rich user interfaces. We do note that with <code>@font-face</code> support, the device does in fact support it, but TypeKit does not yet detect it correctly. As with Playbook support, Typekit usually has a lag between first ship and support, so don&#8217;t be discouraged just because your TypeKit web fonts don&#8217;t work yet.</p>

	<p>With all the good news, there were features missing. Things of note that were absent from Ice Cream Sandwich were Web Workers, Web Sockets (so no real-time web on Android just yet), weak support for the new Input Types (like datetime or range), and WebGL. <span class="caps">SVG</span> was fully supported. We also decided do a head-to-head between iOS 5 and Android 4 on HTML5 support, and extracted some notable differences between the two platforms. This list isn&#8217;t comprehensive, but it shows some gotchas for web devs. Developers should use this guide to decide which <span class="caps">API</span>s to take advantage of on a specific platform, or if they want to stick to the common set. </p>

  <style type="text/css">
  #feature-comparison th &#123;
      padding-right: 10px;
      text-align: left;
  &#125;

  #feature-comparison td &#123;
      border-bottom: 1px solid ghostWhite;
  &#125;

  .positive &#123;
      color: green;
  &#125;
  .negative &#123;
      color: #920000;
  &#125;
  </style>

  <table id="feature-comparison">
    <thead>
      <th align="left" style="border-bottom:1px solid #ddd; width: 200px;">Feature</th>
      <th align="left" style="border-bottom:1px solid #ddd; width:  85px;">Android 4</th>
      <th align="left" style="border-bottom:1px solid #ddd; width:  85px;">iOS 5</th>
    </thead>
    <tbody>
      <tr>
        <td><code>overflow-scrolling</code></td>
        <td class="negative" style="color:#920000;"><i>No</i></td>
        <td class="positive" style="color:green;"><i>Yes</i></td>
      </tr>
      <tr>
        <td>File <span class="caps">API</span></td>
        <td class="positive" style="color:green;"><i>Yes</i></td>
        <td class="negative" style="color:#920000;"><i>No</i></td>
      </tr>
      <tr>
        <td>History Management</td>
        <td class="negative" style="color:#920000;"><i>No</i></td>
        <td class="positive" style="color:green;"><i>Yes</i></td>
      </tr>
      <tr>
        <td>Shared Workers</td>
        <td class="negative" style="color:#920000;"><i>No</i></td>
        <td class="positive" style="color:green;"><i>Yes</i></td>
      </tr>
      <tr>
        <td>Web Sockets</td>
        <td class="negative" style="color:#920000;"><i>No</i></td>
        <td class="positive" style="color:green;"><i>Yes</i></td>
      </tr>
      <tr>
        <td>Web Workers</td>
        <td class="negative" style="color:#920000;"><i>No</i></td>
        <td class="positive" style="color:green;"><i>Yes</i></td>
      </tr>
      <tr>
        <td>Various Input Types</td>
        <td class="half">Half</td>
        <td class="full">Full</td>
      </tr>
      <tr>
        <td>Emoji (not part of HTML5)</td>
        <td class="negative" style="color:#920000;"><i>No</i></td>
        <td class="positive" style="color:green;"><i>Yes</i></td>
      </tr>
    </tbody>
  </table>

	<h3>Performance Testing</h3>

	<p>When checking the user agent received, web servers report that our Galaxy Nexus was using WebKit version 534.40, which is a very modern and up-to-date WebKit. Under the hood, according to the <a href="http://www.bgr.com/2011/10/06/samsung-galaxy-nexus-full-specs-revealed-verizon-wireless-exclusive/">BoyGeniusReport</a>, the Galaxy Nexus contains a dual-core <span class="caps">ARM</span> processor, specifically the TI <span class="caps">OMAP</span> 4460, which is in the same family (Cortex-A9) as BlackBerry PlayBook and the Kindle Fire. We therefore expected <a href="http://www.webkit.org/perf/sunspider/sunspider.html">SunSpider</a> scores in the same range as other tablets. As we&#8217;ve mentioned before, this current generation of tablets all ship with dual-core processors and all have roughly the same JavaScript optimizations. So the results are again fairly predictable and look like other devices we&#8217;ve tested in this generation of hardware.</p>

   <figure class="aligncenter">
        <img src="http://img1.sencha.com/files/misc/sencha-galaxy-nexus-chart-updated.jpg" alt="Galaxy Nexus SunSpider results" height="419" width="636">
        <figcaption>Like most devices in the dual-core Cortex-A9 family, the Galaxy Nexus has predictably good JavaScript performance. <strong>Note:</strong> This image was updated on Dec 14 at 1:30 PM <span class="caps">PST</span>.</figcaption>
    </figure>

	<p>The SunSpider tests are synthetic tests that push the JavaScript engine to its limit. So, next we turned our attention to some more real world tests, looking at CSS3 performance using our own Sencha Animator demos as well as a few other tests. </p>

	<p>Like we tried with the Kindle Fire, we threw caution to the wind and started off on our most challenging CSS3 animation test, the <a href="http://dev.sencha.com/animator/demos/kickfu/">Kick Fu game</a> that was developed for the launch of Sencha Animator. To our surprise, the game didn&#8217;t even start. We were a bit flummoxed by this given the fact that the whole CSS3 animation suite is supported in <span class="caps">ICS</span>. It&#8217;s unclear to us at the moment why this occurs. Our running theory is that the JavaScript game controls might be at fault, but it&#8217;s a wild guess at this point. </p>

	<p>We ran through the rest of our Sencha Animator <a href="http://www.sencha.com/products/animator/demos">demos</a>, some of which are very complex but are all JavaScript free, and were pleasantly surprised to see them all work beautifully. We haven&#8217;t seen an Android device run these demos well to date, and Ice Cream Sandwich shines here. For developers who want to use CSS3 2D, 3D, animations, and transitions, we&#8217;re happy to report that support on Ice Cream Sandwich is now near parity with other leading platforms. </p>

	<p>We also tested a few other real world areas for performance and correctness. We tried a Canvas based <a href="https://github.com/mojombo/ernie/network">GitHub network graph</a>. Rendering performance was fine and the result was accurate. Pinch/zoom also worked well and didn&#8217;t exhibit the low-quality mode toggling, we&#8217;ve found in earlier Androids. The resolution and dithering of the page stayed constant as we zoomed and moved around the page. We also tried out <a href="http://www.effectgames.com/demos/canvascycle/">Canvas Cycle</a> and it worked reasonably well. The frame rate was solid but it rendered to a very very small part of the screen, most likely due to the very high resolution of the Galaxy Nexus. When we zoomed in, the device managed to keep up reasonably well. The <span class="caps">FPS</span> easily dropped by half and audio was never dropped, and the <span class="caps">FPS</span> recovered when we zoomed out to the page&#8217;s natural size. Very impressive improvement over earlier Androids.</p>

	<p>Finally we tested embedded HTML5 audio and video. In one word: finally. We used the test player on <a href="http://www.html5video.org">html5video.org</a>, which gives you a video tag inline to the page. The Galaxy Nexus is the first phone we&#8217;ve seen that actually plays the video inline! iOS 5 on iPad and the iPhone do not play video inline, and we were impressed to see it work very well on Android 4. The video not only plays, but plays inline to the page. This is a big deal for web developers looking to use Video to enhance their web experience. </p>

    <blockquote class="pullquote" style="float: none; width:auto;">
        <p><span>&ldquo;</span>The Galaxy Nexus is a big step forward for developers looking to leverage HTML5 on Android.&rdquo;</p>
    </blockquote>

	<h3>Sencha Touch Kitchen Sink</h3>

	<p>Our <a href="http://dev.sencha.com/deploy/touch/examples/kitchensink/">Kitchen Sink app</a> is built with Sencha Touch and tests all aspects of our mobile web app framework. The Kitchen Sink gives mobile browsers a good workout as it exercises a huge set of browser features including a wide range of CSS3 effects.</p>

	<p>Right off the bat, it&#8217;s obvious that the device is more HTML5-friendly than any other Android when using the Kitchen Sink. Rounded corners look beautiful (not pixelated as in earlier Androids), icon mask work correctly, multi-touch is supported and scrolling is substantially improved. It&#8217;s not all perfect though: full-screen white flashes were still noticeable when scrolling, even if greatly reduced from the seizure-inducing levels in Honeycomb. Page transitions also occasionally caused the browser to &#8220;blink&#8221; as it re-renders. Re-renders are most notable when scrolling a page that&#8217;s been fully laid out. When starting a scull, the page does a white screen-flash, then begins to scroll fluidly. Our best guess is that the browser is dumping the rendered page to the <span class="caps">GPU</span> to use hardware accelerated scrolling, and the blink occurs during that transition. Our guess is the <span class="caps">CPU</span>-&gt;<span class="caps">GPU</span> texture transition is the main culprit here.</p>

	<p>Sencha Touch supports 3D transitions, specifically Flip and Cube, and they now work on Android for the first time, although screen-flashes are again a problem artifact. The other big issue we found is that address-bar hiding has changed between Android 3 and 4. This will impact web developers widely. In an single page app, like our Sencha Touch Kitchen Sink, it&#8217;s hard to get a hidden address bar to re-appear. On older Androids, pulling the whole page down would side the address bar back and push the page down with it. In <span class="caps">ICS</span>, this doesn&#8217;t happen reliably, and instead of adjusting the page geometry it actually overlays the address bar on top of the page content. This is not a deal breaker, but a definite change of behavior that developers should watch for. </p>

	<h3>Ice Cream Sandwich: Suggestions for the HTML5 App Developer</h3>

	<p><img class="alignright" src="http://img1.sencha.com/files/misc/HTML5_Logo_128.png" alt="HTML5 logo" height="128" width="128"> In summary, the Galaxy Nexus and Ice Cream Sandwich are a major step forward for the Android platform. Feature by feature, HTML5 support has gotten much better, rendering has become more accurate, and performance has gotten much faster. Although still behind the current HTML5 gold standard of iOS5, Android 4.0 is night and day compared to previous versions. We&#8217;re excited to see Google put this level of effort into Android&#8217;s web capabilities. And we hope they keep their foot on the gas! (And we&#8217;re keeping our fingers crossed that the Kindle Fire will get an upgrade to <span class="caps">ICS</span> in the New Year!)</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Tue, 13 Dec 2011 14:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/galaxy-nexus-the-html5-developer-scorecard/#date:14:00</guid>
        </item>
        
        <item>
        <title>Ext GWT 3.0 Beta Now Available</title>
        <author>Edmund Leung</author>
        <description>
            Today we are happy to announce the availability of Ext GWT 3.0 Beta. Read on to find about our future plans for 3.x, and a special promotion going through December 2011.
        </description>
        <link>http://www.sencha.com/blog/ext-gwt-3-0-beta-1-available/</link>
        <content:encoded>
            <![CDATA[
                <figure class="aligncenter">
<img src="http://img1.sencha.com/files/misc/Ext-GWT-3-hero-charts.jpg" alt="Ext GWT 3.0 Beta Now Available" height="380" width="600">
<figcaption>Ext GWT 3.0 Beta Now Available. <a class="more-icon" href="http://dev.sencha.com/deploy/gxt-3.0.0-beta1.zip">Download Ext GWT 3.0 Beta Today</a></figcaption>
</figure>

<p><h3>Today we are happy to announce the availability of Ext GWT 3.0 Beta!</h3></p>

<p>We consider this Ext GWT 3.0 Beta to be feature complete (with one exception, the tri-state tree). Moving forward we will focus solely on fixing bugs that we find and that the community reports. In the time since Developer Preview 5, the team has been hard at work finishing the new 3.0 features and working to fix bugs that have been reported by the community. We're excited in Ext GWT 3.0 to include the following major features:</p>

<ul>
<li>Adoption of GWT Events and Handlers
<li>First class support and interoperability with GWT Widgets
<li>Interface based design (supports easier testing and the MVP pattern)
<li>Improved model support (POJO based)
<li>Compile time templates
<li>Cells, including support for cells in data widgets
<li>Cell based fields
<li>New and improved strongly typed layout engine
<li>Full UiBinder support
<li>New native Draw and Charting API (no plugins!)
<li>Custom theming based on Appearance pattern and ClientBundle
</ul>

<p>For a list of changes in 3.0 Beta, please refer to the <a href="http://dev.sencha.com/deploy/gxt-3.0.0-beta1/release_notes.html">release notes</a>.

<p class="button-group">
    <a class="button-link inline small arrow" href="http://dev.sencha.com/deploy/gxt-3.0.0-beta1.zip" title="Download Ext GWT 3.0 Beta"><span>Download Ext GWT 3.0 Beta</span></a>
    <a class="button-link inline small blue" href="http://sencha.com/examples-dev" title="View demo for Ext GWT 3.0 Beta">View Demo</a>
</p>

<p>The improvements in Ext GWT 3.0 allow you to take advantage of new functionality with a minimal learning curve. Also, the addition of the new plugin free charting components enable you to extend your applications with powerful data visualization and analytics capabilities, all without needing brower plugins. The new charting components leverage SVG and VML giving developers compatibility across all desktop browsers. And because v2 and v3 can coexist in the same applications (stay tuned for detailed instructions in a upcoming blog post), you can plan for an orderly upgrade that fits your development cycle.</p>

<p><h3>Special promotion through the end of 2011</h3></p>
<p>
  <a href="http://www.sencha.com/store/extgwt/"><img class="alignright" src="http://img1.sencha.com/files/misc/sale2.png" alt="Sale" height="48" width="120"></a> We’re also offering a <strong>discounted special </strong>for the Ext GWT 2.x commercial bundle. From now until the end of the year, if you purchase an Ext GWT 2.x bundle, you’ll receive a 20% discount off the current price and receive Ext GWT 3.0 GA when it’s available at no additional cost! This special is available until the end of 2011, so take advantage of it now to lock in savings.
</p>

<figure class="aligncenter">
  <img src="http://img1.sencha.com/files/misc/ext-gwt-3-sale-prices.png" alt="Ext GWT 2.x Sale prices" height="180" width="500">
  <figcaption>Buy Ext GWT 2.x + Support for 20% off through December 31st. You’ll be eligible for Ext GWT 3.x when available in the early half of 2012.</figcaption>
</figure>

<p>
You can take advantage of this offer immediately at the <a href="http://www.sencha.com/store/extgwt/">Sencha store</a>.
</p>

<p>Additionally, we are pre-announcing updated Ext GWT 3.0 commercial pricing that will take effect after the release of Ext GWT 3.0 GA in the early half of 2012. Of course, Ext GWT 3.0 will continue to be available under the GPLv3 license, giving you the flexibility to choose the license that works best for your scenario.</p>

<figure class="aligncenter">
  <img src="http://img1.sencha.com/files/misc/ext-gwt-3-2012-prices.png" alt=""height="355" width="392"  />
  <figcaption>Ext GWT 3.x prices to take effect in early half of 2012.</figcaption>
</figure>


<p><h3>Maven</h3></p>

The final release of 3.0 will be put into Maven central and no extra repository is required. However, the releases before GA are released as snapshot releases.</p>

To get the <a href="https://oss.sonatype.org/content/repositories/snapshots/com/sencha/gxt/">snapshot releases</a>, you will need to add the following repository section to your pom.xml:

<style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.xml .imp {font-weight: bold; color: red;}
.xml .es0 {color: #000099; font-weight: bold;}
.xml .br0 {color: #66cc66;}
.xml .sy0 {color: #66cc66;}
.xml .st0 {color: #ff0000;}
.xml .sc-1 {color: #808080; font-style: italic;}
.xml .sc0 {color: #00bbdd;}
.xml .sc1 {color: #ddbb00;}
.xml .sc2 {color: #339933;}
.xml .sc3 {color: #009900;}
.xml .re0 {color: #000066;}
.xml .re1 {color: #000000; font-weight: bold;}
.xml .re2 {color: #000000; font-weight: bold;}
.xml span.xtra { display:block; }
</style><pre class="xml"><span class="sc3"><span class="re1">&lt;repository<span class="re2">&gt;</span></span></span>
  <span class="sc3"><span class="re1">&lt;id<span class="re2">&gt;</span></span></span>sonatype-snapshots<span class="sc3"><span class="re1">&lt;/id<span class="re2">&gt;</span></span></span>
  <span class="sc3"><span class="re1">&lt;name<span class="re2">&gt;</span></span></span>Sonatype Snapshots<span class="sc3"><span class="re1">&lt;/name<span class="re2">&gt;</span></span></span>
  <span class="sc3"><span class="re1">&lt;url<span class="re2">&gt;</span></span></span>https://oss.sonatype.org/content/repositories/snapshots/<span class="sc3"><span class="re1">&lt;/url<span class="re2">&gt;</span></span></span>
  <span class="sc3"><span class="re1">&lt;snapshots<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;enabled<span class="re2">&gt;</span></span></span>true<span class="sc3"><span class="re1">&lt;/enabled<span class="re2">&gt;</span></span></span>
  <span class="sc3"><span class="re1">&lt;/snapshots<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/repository<span class="re2">&gt;</span></span></span></pre>

We have several artifacts available:

<ul>
<li><strong>gxt-release</strong> - A zip of the release, similar to how Ext <span class="caps">GWT</span> was released before 3.0
<li><strong>gxt</strong> - The core component and data classes
<li><strong>gxt-charts</strong> - The new drawing and charting API
<li><strong>gxt-legacy</strong> - Classes to ease porting projects from earlier Ext GWT versions
<li><strong>uibinder-bridge</strong> - Optional support to allow complete configuring non Widget types using in UiBinder XML. Will not be required when Google releases 2.5
</ul>

                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Thu, 08 Dec 2011 15:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/ext-gwt-3-0-beta-1-available/#date:15:00</guid>
        </item>
        
        <item>
        <title>What&#8217;s Coming in Ext JS 4.1</title>
        <author>Don Griffin</author>
        <description>
            The primary focus of the upcoming Ext JS 4.1 release is performance. We have been hard at work to improve performance across the board, but we have concentrated on two main areas: rendering and layout. While the majority of our time has been dedicated to this effort, there are many other exciting developments to share. Chief among these are some major improvements to grid and border layout and a preview of the new Neptune theme.
        </description>
        <link>http://www.sencha.com/blog/whats-new-in-ext-js-4-1/</link>
        <content:encoded>
            <![CDATA[
                <p><img class="alignright rounded shadow" src="http://img1.sencha.com/files/misc/whats-new-ext-js-4-1.jpg" alt="What's New in Ext JS 4.1" width="180"> </p>

	<h4>Update (12/23): Ext JS 4.1 Beta 1 is now available
<p class="button-group"> 
    <a class="button-link inline small arrow" href="http://cdn.sencha.io/ext-4.1.0-beta-1.zip" title="Download Ext JS 4.1 Beta 1"><span>Download Ext JS 4.1 Beta 1</span></a>  
    <a class="button-link inline small blue" href="http://www.sencha.com/forum/showthread.php?164313-Ext-JS-4.1-Beta-1-Now-Available" title="more info">more info</a> <br />
</p> </h4>

	<p>The primary focus of the upcoming Ext JS 4.1 release is performance. We have been hard at work to improve across the board, but we have concentrated on two main areas: rendering and layout. While the majority of our time has been dedicated to this effort, there are many other exciting developments to share. Chief among these are some major improvements to grid and border layout and a preview of the new Neptune theme.</p>

	<h3>Performance</h3>

	<p>The necessary precursor to improving performance is measuring it. To successfully and permanently increase performance, however, measurement has to become part of the regular build and test process. This was the first piece we put in place for Ext JS 4.1. Going beyond the use of profilers like dynaTrace, we created some simple measurement tools to use on a continuous basis. We use these tools to track key metrics on every build.</p>

	<p>The performance metrics we track correspond to the page life cycle: Load, Initialize, Render and Layout.</p>

	<h4>Load</h4>

	<p>An Ext JS application comes to life when its &#8220;onReady&#8221; function is called. Prior to that time, many things have to take place. When we say &#8220;page load&#8221;, we can mean many different things, but for the sake of simplicity, here we define page load as the time period that starts at the execution of the first line of &#8220;ext-all.js&#8221; and ends just before any onReady functions are called. This primarily includes time spent executing all of the Ext.define statements that populate the Ext namespace, and also the detection of when the page&#8217;s <span class="caps">DOM</span> is ready.</p>

	<h4>Initialize</h4>

	<p>When the onReady functions are called, the application takes over. Applications perform whatever custom initialization they may need, but at some point they will create components and containers to display. In some applications, there will be literally hundreds of components created. Each of these components and containers has to be constructed, initialized and wired together.</p>

	<p>In Ext JS 4, many more things are components compared with previous releases. Consider the header of a panel. The Header component is actually a container that contains a basic component for the title and (optionally) a set of Tool components: all managed by an hbox layout. This means you can add components to the panel&#8217;s header quite easily. It also means that there are more components and containers created in Ext JS 4 given the same panel configuration. Looking at the Themes example in Ext JS 3, there were 148 components in 50 containers. That same configuration in Ext JS 4 generates 271 components in 97 containers. This makes optimization of this area essential.</p>

	<h4>Render</h4>

	<p>The next step is the conversion of these initialized components and containers into <span class="caps">HTML</span>. In previous versions of Ext JS, rendering was a mixture of calls to the createElement <span class="caps">API</span> and setting innerHTML. In Ext JS 4.0, each component&#8217;s primary element was created using createElement and its internal structure was produced using an XTemplate instance referred to as the &#8220;renderTpl&#8221;.</p>

	<p>If a component happened to be a container such as a Panel, additional elements were created using createElement and the child components repeated the process as they rendered into the panel&#8217;s body element. At each step, special component methods were called and events were fired to allow derived classes and applications to extend this process.</p>

	<p>In version Ext JS 4.1 we have optimized component rendering, so components are rendered in bulk. Instead of alternating calls to createElement and innerHTML, bulk rendering creates the entire component tree as <span class="caps">HTML</span> and then adds it to the <span class="caps">DOM</span> with a single write to innerHTML.</p>

  <figure class="alignright" style="width:300px;">
    <img src="http://img1.sencha.com/files/misc/render-flow.png" alt="Figure 1: Render Process" style="max-width:100%;">
    <figcaption>Figure 1: Render Process</figcaption>
  </figure>

	<p>To support this change we added a new method to components called &#8220;beforeRender&#8221;. There has always been the &#8220;beforerender&#8221; event, but derived classes typically had to choose between overriding the &#8220;render&#8221; or &#8220;onRender&#8221; method if they needed to do any work just before their primary element was created. They could do what they needed and then call the base version of the method which would then create the element.</p>

	<p>The general flow of rendering in 4.0 vs 4.1 is shown in Figure 1. In both cases, the process starts at a particular component and descends the component tree.</p>

  <div style="clear:right"></div>

	<h4>Layout</h4>

	<p>Once the <span class="caps">DOM</span> has all the necessary elements, the final step is to determine the size and position of any elements that need special handling. Or in other words: the final step is to lay out the components. This process is the most complex and time consuming. It represented just over half the total time in loading the Themes example in 4.0.7. The challenge with layouts comes from how browsers handle requests for style information (such as margins, width and height), especially if these are being changed along the way.</p>

	<p>The first rule of performance is that <span class="caps">CSS</span> calculations are expensive. Because of this, browsers cache these results. When JavaScript comes along and sets a width or height, however, the browser has to invalidate some or all of this cache. How much of the cache this affects is a function of what was changed and the cleverness of the browser&#8217;s <span class="caps">CSS</span> engine. The next request for style information will typically then trigger a &#8220;reflow&#8221; to refresh the cache. In general, one could say &#8220;write + read = reflow&#8221;. Given that reflows are expensive, an obvious way to increase performance is to reduce the number of reflows that occur during a layout.</p>

	<p>In Ext JS 4.0, an hbox layout, for example, buffered all of its calculations and wrote those results only after it had read all that it needed from each component. If the hbox needed to know the size of a component, it had to measure the component&#8217;s element (read), but before it could do that, the layout of that component had to do its work first. In other words, the component&#8217;s layout performed some calculations (reads) and then stored the results to the <span class="caps">DOM</span> (writes). The hbox then measured the component&#8217;s element (read).</p>

	<p>What started out as a sequence of reads followed by a sequence of writes often became a highly interleaved set of reads and writes, which, of course, resulted in a large number of reflows. To eliminate these reflows the child layouts needed a way &#8211; external to the <span class="caps">DOM</span> &#8211; to report their results to their owner.</p>

	<p>Layouts in Ext JS 4.1 have been refactored to use a <i>layout context</i> object to share results while avoiding the write/read to the <span class="caps">DOM</span> (and its associated reflow). This change, while largely internal, breaks custom layouts. While we believe this is a fairly rare practice, it is something to be aware of when upgrading.</p>

	<h4>From 4.0.7 to 4.1 PR1</h4>

	<p>All of these optimizations produced some very significant gains. One of the key examples used to benchmark the performance of Ext JS is the Themes example. The performance difference of 4.1 PR1 compared to 4.0.7 in this example is shown in Figure 2, as tested on IE8.</p>

  <figure class="aligncenter">
    <img src="http://img1.sencha.com/files/misc/themes-perf-41.png" alt="" width="492"  />
    <figcaption>Figure 2: Themes Example Performance</figcaption>
  </figure>

	<h4>Next Steps</h4>

	<p>While 4.1 is clearly a big improvement over 4.0, it is not yet as fast across the board as 3.4. This is not the last word on optimizing performance. In fact, we have many other performance optimizations planned for 4.x that just could not fit in this release. Our goal right now is to stabilize and ship a final release of Ext JS 4.1 as quickly as possible. We will then be hard at work to accelerate getting those additional gains delivered in subsequent releases.</p>

	<h3>Other Goodies</h3>

	<p>As promised, this release is not purely about performance. We demonstrated the new Neptune theme at SenchaCon this year, and we are very pleased that a Neptune preview will be part of this release. Much to our delight, the Calendar example will be returning as well.</p>

	<p>The list could go on with the many other improvements, but let&#8217;s dive in to some of the more exciting changes.</p>

	<h4>Grid</h4>

	<p>By popular demand, we went back and investigated other solutions to the buffered scrolling and &#8220;infinite&#8221; scrolling mechanisms in Ext JS 4.0. We wanted to see if we could solve our technical problems without resorting to so-called &#8220;virtual scrolling&#8221;, and we are happy to report that, in fact, we can.</p>

	<p>In 4.1, grids of (almost) every kind now use native scrolling. This vastly improves the user experience because things like acceleration, momentum and friction all work as well for grid as they do for any other scrolling content. Another welcome improvement is that this also means that scrolling is done by pixels and not whole rows. This is also true for &#8220;infinite&#8221; grids, even when the rows are variable height.</p>

	<p>The only situation where virtual scrolling is still used is on the locked half of a locking grid. Since it has no scrollbar, native scrolling is not an option there.</p>

	<p>Lastly, though not part of grid per se, metadata handling is now supported by Store.</p>

	<h4>Border Layout</h4>

	<p>In the process of working on layouts, border layout in particular benefited from some internal restructuring. It has always been a very popular layout, but it has also suffered from some long-standing limitations:</p>

	<ul>
		<li>You could only have one region that is north, south, east or west. If you needed multiple south regions, you needed to use nested border layouts.</li>
		<li>You could not configure the layout such that an east or west region had priority over a north or south region. To achieve this, again, you needed to use nested border layouts.</li>
		<li>Components could not be added to the container after creation.</li>
		<li>Components could not be removed from the container after creation.</li>
	</ul>

	<p>We are pleased to say that all of these limitations have been removed in Ext JS 4.1.</p>

	<h4>XTemplate</h4>

	<p>Internally, Ext JS uses the XTemplate class for many things. It is a critically important part of the framework but was missing one important feature: it could not efficiently append to an array for a subsequent join operation. When we started work on bulk rendering, we decided that both DomHelper and XTemplate needed to collaborate on markup production by pushing their output onto a shared array.</p>

	<p>We then discovered that the internals of XTemplate could not be surgically modified to support this, which allowed us to reconsider just how this piece needed to work. Some long-standing challenges and issues with XTemplate:</p>

	<ul>
		<li>It only supported the most basic control structures: &#8220;for&#8221; and &#8220;if&#8221;.</li>
		<li>The code generated from the template was somewhere between very hard and impossible to debug. As a result, errors in the template text were very difficult to track down.</li>
		<li>The template text was compiled at XTemplate construction time, which was undesirable because many XTemplate instances were never actually used.</li>
		<li>Executing the compiled code for a template was not as fast as it could be because it contained many internal function calls and string concatenations.</li>
	</ul>

	<p>In 4.1, XTemplates are now compiled the first time they are used. This makes construction of an XTemplate nearly free. Further, the compiled code is now a single function that can be stepped into using the debugger, and it looks very much like the original template.</p>

	<p>With this approach, many things became simple to support. Like &#8220;else&#8221; and &#8220;else if&#8221; statements and &#8220;switch&#8221; statements. Even literal code insertion (similar to <span class="caps">JSP</span> or <span class="caps">ASP</span>) was now a trivial extension.</p>

  <style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript"><span class="kw2">var</span> tpl <span class="sy0">=</span> <span class="kw2">new</span> Ext.<span class="me1">XTemplate</span><span class="br0">&#40;</span>
    <span class="st0">'&lt;tpl for=&quot;orders&quot;&gt;'</span><span class="sy0">,</span>
        <span class="st0">'Order &#123;id&#125; is '</span><span class="sy0">,</span>
        <span class="st0">'&lt;tpl if=&quot;total &amp;gt; 100&quot;&gt;'</span><span class="sy0">,</span>
            <span class="st0">'large'</span><span class="sy0">,</span>
        <span class="st0">'&lt;tpl elseif=&quot;total &amp;gt; 25&quot;&gt;'</span><span class="sy0">,</span>
            <span class="st0">'medium'</span><span class="sy0">,</span>
        <span class="st0">'&lt;tpl elseif=&quot;total &amp;gt; 0&quot;&gt;'</span><span class="sy0">,</span>
            <span class="st0">'small'</span><span class="sy0">,</span>
        <span class="st0">'&lt;tpl else&gt;'</span><span class="sy0">,</span>
            <span class="st0">'&#123;% continue; %&#125;'</span><span class="sy0">,</span>
        <span class="st0">'&lt;/tpl&gt;'</span><span class="sy0">,</span>
        <span class="st0">'Items:'</span><span class="sy0">,</span>
        …
    <span class="st0">'&lt;/tpl&gt;'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>

	<p>The &#8220;&lt;tpl for&gt;&#8221; statement generates a proper &#8220;for&#8221; loop while the &#8220;&lt;tpl if&gt;&#8221;, &#8220;&lt;tpl elseif&gt;&#8221; and &#8220;&lt;tpl else&gt;&#8221; generate the obvious &#8220;if&#8221; and &#8220;else&#8221; blocks.</p>

	<p>The new &#8220;&#123;% x <span>&#125;&#8221; syntax is used similar to &#8220;&#123;[ x ]&#125;&#8221;. The body of both of these is treated as arbitrary code. In the &#8220;&#123;[ x ]&#125;&#8221; expression, x is an expression that produces a value that is placed into the output. In the &#8220;&#123;</span> x %&#125;&#8221; case, &#8220;x&#8221; is simply inserted into the function. In this case, it will continue the for loop when reached.</p>

	<h4>Overrides</h4>

	<p>In Ext JS, it has long been a common practice to share bug fixes and enhancements in the form of an &#8220;override&#8221;. In the past, these had to be manually managed as special entities. They operated on existing classes, whereas just about all other code in Ext JS 4.0 uses class names as strings. For example, to derive from Ext.panel.Panel:</p>

  <style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript">Ext.<span class="me1">define</span><span class="br0">&#40;</span><span class="st0">'My.app.Panel'</span><span class="sy0">,</span> <span class="br0">&#123;</span>
    extend<span class="sy0">:</span> <span class="st0">'Ext.panel.Panel'</span><span class="sy0">,</span>
&nbsp;
    method<span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">this</span>.<span class="me1">callParent</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>

	<p>But to apply an override to the same Panel class (in Ext JS 4.0), the shape changes completely:</p>

  <style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript">Ext.<span class="me1">panel</span>.<span class="me1">Panel</span>.<span class="me1">override</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
    method<span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">this</span>.<span class="me1">callOverridden</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// not possible before 4.x</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>

	<p>And this code will fail if the Panel class is not loaded already. The inheritance use case would not fail, but would instead inform the loader/builder that Ext.panel.Panel was required.</p>

	<p>Overrides are now first-class citizens. They can be named and loaded when needed. In fact, writing an override is just about identical to writing a derived class.</p>

  <style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript">Ext.<span class="me1">define</span><span class="br0">&#40;</span><span class="st0">'My.app.PanelPatch'</span><span class="sy0">,</span> <span class="br0">&#123;</span>
    override<span class="sy0">:</span> <span class="st0">'Ext.panel.Panel'</span><span class="sy0">,</span>
&nbsp;
    method<span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">this</span>.<span class="me1">callParent</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>

	<p>Not only does this support the classic uses for override in a managed way, but overrides can actually become tools in your designs similar to a mixin. Where a mixin is always part of the class (like the base class), overrides can be bolted on later and only if desired or needed.</p>

	<h3>Conclusion</h3>

	<p>We hope you get a chance to download and try out the new features and improvements as we approach the final release of Ext JS 4.1. We are looking forward to getting feedback from everyone on how this release has benefited you, and where we should look at further improvements.</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Mon, 05 Dec 2011 17:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/whats-new-in-ext-js-4-1/#date:17:00</guid>
        </item>
        
        <item>
        <title>Sencha.io Src Update</title>
        <author>James Pearce</author>
        <description>
            We&apos;re pleased to announce a set of new and experimental features for Sencha.io Src, the image resizing service within our popular Sencha.io cloud suite.
        </description>
        <link>http://www.sencha.com/blog/sencha-io-src-update/</link>
        <content:encoded>
            <![CDATA[
                <figure class="aligncenter">
    <img src="http://img1.sencha.com/files/misc/sencha-io-devices-2.jpg" alt="Photo of an astronaut out for a spacewalk, shown on an iPad and an iPod touch" height="400" width="636">
    <figcaption>Sencha.io offers an API for smart resizing of images on many devices with different-sized screens.</figcaption>
</figure>

<p><a href='http://www.sencha.com/learn/how-to-use-src-sencha-io'>Sencha.io Src</a> is one of the cloud services offered as a part of Sencha.io, and solves a common problem that mobile developers face: how to design for multiple screen resolutions.</p>

<p>We're thrilled that the service is now handling many hundreds of images <em>per second</em> for mobile sites and applications all around the world. And we also very pleased to announce a set of new and experimental features to the service, available today.</p>

<h3>Support for device orientation</h3>

<p>Sencha.io Src recognizes devices according to their user-agents, and scales images to their known screen sizes. This however, is not able to take account of the orientation of the device. An iPhone is well-known to have a screen of 320×480 pixels, but when an app is being used in landscape orientation, an image ought rather be constrained to 480×320.</p>

<p>To solve this, you can now explicitly <a href='/learn/how-to-use-src-sencha-io#o'>set screen orientation</a>, and to do so, the service's API now accepts '<code>portrait</code>' or '<code>landscape</code>' in the URL:</p>

<style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript"><span class="sy0">&lt;</span>img
  src<span class="sy0">=</span><span class="st0">'http://src.sencha.io/landscape/http://sencha.com/files/u.jpg'</span>
  alt<span class="sy0">=</span><span class="st0">'Constrained to WxH, W greater than H'</span>
<span class="sy0">/&gt;</span></pre>

<p>More importantly, the service now also provides a small JavaScript library which you can include in your page, and which will detect orientation if the browser's <code>window</code> API supports it, and set a cookie accordingly. Subsequent requests to sencha.io Src will then indicate the current orientation, which can be detected using '<code>detect</code>' in the URL:</p>

<style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript"><span class="sy0">&lt;</span>script src<span class="sy0">=</span><span class="st0">'http://src.sencha.io/screen.js'</span><span class="sy0">&gt;&lt;/</span>script<span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>img
  src<span class="sy0">=</span><span class="st0">'http://src.sencha.io/detect/http://sencha.com/files/u.jpg'</span>
  alt<span class="sy0">=</span><span class="st0">'Constrained to WxH, W greater than H'</span>
<span class="sy0">/&gt;</span></pre>

<img class="alignright" src='http://src.sencha.io/200/http://www.sencha.com/files/learn/orient.png'>

<p>Try out <a href='http://src.sencha.io/tests/orientation'>the test page</a> with an iPhone, for example, and try reloading the page with different orientations.</p>

<p>(As the <a href='/learn/how-to-use-src-sencha-io#ocsm'>documentation</a> points out, you cannot always guarantee that the cookie has been set prior to a non-deferred image download, so you may need to use this in conjunction with document <code>load</code> events in regular web pages, as we do in the example above.)</p>

<h3 style="clear:both;">Client-side measurements</h3>

<p>The same <code>screen.js</code> script also takes various <a href='/learn/how-to-use-src-sencha-io#csm'>screen-size measurements</a> through the browser's DOM and BOM APIs, and these can be also be used to adjust screen sizes as an alternative to user-agent detection.</p>

<p>For example, if you want an image to be declaratively constrained by the <code>screen.width</code> value:</p>

<style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript"><span class="sy0">&lt;</span>script src<span class="sy0">=</span><span class="st0">'http://src.sencha.io/screen.js'</span><span class="sy0">&gt;&lt;/</span>script<span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>img
  src<span class="sy0">=</span><span class="st0">'http://src.sencha.io/screen.width/http://sencha.com/files/u.jpg'</span>
  alt<span class="sy0">=</span><span class="st0">'My JS-measured image'</span>
<span class="sy0">/&gt;</span></pre>

<p>This approach anticipates a '<a href='http://futurefriend.ly'>future-friendly</a>' alternative to user-agent detection, and also allows you to specify other types of measurements: for example, <code>document.body.clientWidth</code> will measure the inner width of your document's body, taking its margin into account. The trade-off is the possible race-condition between cookies, initial image requests, and also the way in which some measurements will vary during the loading of a page. There are more notes in the documentation, and real-device testing remains highly recommended!</p>

<h3>New formulaic manipulation</h3>

<p>You've long been able to manipulate image dimensions using operators like '<code>-</code>' (to deduct pixels) or '<code>x</code>' (to scale by percentage).</p>

<p>Sencha.io Src now adds support for <a href='/learn/how-to-use-src-sencha-io#rnd'>rounding</a> (using '<code>r</code>') and <a href='/learn/how-to-use-src-sencha-io#max'>explicit maxima</a> (using '<code>m</code>' and  '<code>n</code>') in these formulae.</p>

<p>For example, <code>r20</code> will ensure that an image is always constrained by a multiple of 20 pixels. This is often important when creating tile- or column-based layouts:</p>

<style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript"><span class="sy0">&lt;</span>img
  src<span class="sy0">=</span><span class="st0">'http://src.sencha.io/x50r20/http://sencha.com/files/u.jpg'</span>
  alt<span class="sy0">=</span><span class="st0">'Half the screen, rounded down to nearest 20 pixels'</span>
<span class="sy0">/&gt;</span></pre>

<p>The maxima operators allow you to indicate different size limits for mobile- and non-mobile devices. This is useful to ensure that, even if the actual browser cannot be recognized, its genre can be used to ensure sensible images are sent for client-side resizing. The code below, for example, will display an image no larger than 500 pixels on a desktop browser, and no larger than 100 pixels on a mobile browser:</p>

<style>/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.javascript .imp {font-weight: bold; color: red;}
.javascript .kw1 {color: #000066; font-weight: bold;}
.javascript .kw2 {color: #003366; font-weight: bold;}
.javascript .kw3 {color: #000066;}
.javascript .co1 {color: #006600; font-style: italic;}
.javascript .co2 {color: #009966; font-style: italic;}
.javascript .coMULTI {color: #006600; font-style: italic;}
.javascript .es0 {color: #000099; font-weight: bold;}
.javascript .br0 {color: #009900;}
.javascript .sy0 {color: #339933;}
.javascript .st0 {color: #3366CC;}
.javascript .nu0 {color: #CC0000;}
.javascript .me1 {color: #660066;}
.javascript span.xtra { display:block; }
</style><pre class="javascript"><span class="sy0">&lt;</span>img
  src<span class="sy0">=</span><span class="st0">'http://src.sencha.io/n500m100/http://sencha.com/files/u.jpg'</span>
  alt<span class="sy0">=</span><span class="st0">'Max 500 or 100, depending on browser'</span>
<span class="sy0">/&gt;</span></pre>

<h3>Take it for a spin</h3>

<p>The full documentation for the API is <a href='/learn/how-to-use-src-sencha-io'>available here</a>, with a summary of its syntax, new formulaic operators, and client-side measurements <a href='/learn/how-to-use-src-sencha-io#summary'>here</a>.</p>

<p>Please let us know how you get on with these new features, and what else you might like to see form the service in the future. Enjoy!</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Tue, 22 Nov 2011 19:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/sencha-io-src-update/#date:19:00</guid>
        </item>
        
        <item>
        <title>Sencha Touch Spotlight: Viewbeat</title>
        <author>Burc Sade</author>
        <description>
            Sencha community member Burc Sade writes a guest blog post about his experience with Sencha Touch. His application, Viewbeat, is available on the Apple App Store and makes it fast and simple to ask questions and get answers from friends and others.
        </description>
        <link>http://www.sencha.com/blog/sencha-touch-spotlight-viewbeat/</link>
        <content:encoded>
            <![CDATA[
                <p><a class="alignright" href="http://www.sencha.com/apps/viewbeat"><img src="http://img1.sencha.com/files/misc/viewbeat-icon.png" alt="Viewbeat app icon" height="114" width="114"></a> <a href="http://www.viewbeat.com">Viewbeat</a> is an application that makes it fast and simple to ask questions and get answers from your friends and other people, with rankings! Built using Sencha Touch and wrapped with PhoneGap, it features a simple user interface that lets you see the most popular answers at a glance (based on the rating system), so you don&#8217;t have to go through all of the answers every time.</p>

	<blockquote class="pullquote right">
		<p class="pullquote right"><span>&#8220;</span>Instead of worrying about the interface, I could focus on building my application&#8212;enabling me to be more creative.&#8221;</p>
	</blockquote>

	<p>It&#8217;s my personal project and the result of an idea that I developed after struggling to find an easy way to ask my friends about a product I was planning to buy. My goal was to build a tool that lets people ask a question on the go and get answers fast with the most basic privacy options and notification abilities.</p>

	<p>Viewbeat also lets you discover more about your friends and find new like-minded people based on the answers they give. Thanks to the unique matching algorithm, you can find like-minded people with similar interests at the touch of a button and group them, as well as the topics and even topic options you like so you can follow them separately.</p>

    <figure class="aligncenter" style="clear:both;">
        <a class="lightbox" href="http://img1.sencha.com/files/misc/viewbeat-1.png" style="display:block;float:left;margin-right:10px;width:200px;" title="Sencha Touch lets you create elegant user interfaces that look and feel like native apps"><img src="http://src.sencha.io/200/http://img1.sencha.com/files/misc/viewbeat-1.png" alt="Sencha Touch lets you create elegant user interfaces that look and feel like native apps"></a>
        <a class="lightbox" href="http://img1.sencha.com/files/misc/viewbeat-3.png" style="display:block;float:left;margin-right:10px;width:200px;" title="The component model makes it simple to create complex and easy to use interfaces"><img src="http://src.sencha.io/200/http://img1.sencha.com/files/misc/viewbeat-3.png" alt="The component model makes it simple to create complex and easy to use interfaces"></a>
        <a class="lightbox" href="http://img1.sencha.com/files/misc/viewbeat-2.png" style="display:block;float:left;width:200px;" title="Developing custom components such as a profile image button is a breeze with Sencha Touch"><img src="http://src.sencha.io/200/http://img1.sencha.com/files/misc/viewbeat-2.png" alt="Developing custom components such as a profile image button is a breeze with Sencha Touch"></a>
        <figcaption>Click each image to view larger. Check out <a href="http://www.sencha.com/apps/viewbeat">Viewbeat</a> in the Sencha Touch App Gallery.</figcaption>
    </figure>

	<h3>Why I Chose Sencha Touch</h3>

	<p>I carefully considered whether to go native or use a mobile framework that supports open web technologies. Being able to port my applications to several mobile platforms without a hassle was an important part of my criteria. After carefully examining my options, I decided to choose HTML5/JavaScript and add some PhoneGap to the mix, so I can use native application features such as notifications and access to the contacts list.</p>

	<p>Before starting development, it was clear that I needed a touch-based UI framework that had components like sliding panels and action sheets with the look-and-feel of modern touch devices. Among the touch frameworks I reviewed, I decided to use Sencha Touch because it has all of the required components, packaged in an easy-to-use framework that I can use to build robust applications. Instead of worrying about the interface, I could focus on building my application &#8212; enabling me to be more creative.</p>

	<p>With its strong Ext JS background, Sencha Touch also enabled me to develop my application using an <span class="caps">MVC</span> pattern that ensures that my application has the flexibility to be extended easily. As a developer with strong <span class="caps">MVC</span> experience, having a familiar pattern at hand made the development process more relaxing and less stressful.</p>

	<p>Finally, the object-oriented approach of Sencha Touch let me create custom widgets and extend the capabilities of provided elements, making it a breeze to create custom functionality which is crucial for my application.</p>

	<h3>Business Value of Using Sencha Touch</h3>

	<p>Using the Sencha Touch framework, I completed the application in three months, mostly in my spare time, and cut my development time in half. I also got the benefit of a modern, rich UX, while having the freedom to focus on the details of designing and developing the internals of my application.</p>

	<h3>Advice to New Developers</h3>

	<p>Learning to use Sencha Touch was easy. Newcomers should start by watching the Sencha Touch video tutorials which provide a good overview. I also recommend going through the Kitchen Sink demo &#8212; it includes a lot of good examples for creating a rich, high quality UI.</p>

	<h3>Final Thoughts</h3>

	<p>I am quite satisfied with the outcome of this project and I&#8217;m going to continue building my upcoming mobile projects with Sencha Touch and PhoneGap. I believe that mobile is the way of the future for computing, and Sencha Touch will definitely be a big part of it.</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Fri, 18 Nov 2011 17:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/sencha-touch-spotlight-viewbeat/#date:17:00</guid>
        </item>
        
        <item>
        <title>HTML5 Scorecard: Amazon Kindle Fire</title>
        <author>Michael Mullany</author>
        <description>
            As part of our continuing series on the HTML5 capabilities of new mobile platforms, we&apos;re taking the measure of the new Amazon Kindle Fire. Join us as we take a look at how the device stacks up as an HTML5 app platform.
        </description>
        <link>http://www.sencha.com/blog/html5-scorecard-amazon-kindle-fire/</link>
        <content:encoded>
            <![CDATA[
                <figure class="aligncenter">
        <img src="http://img1.sencha.com/files/misc/Sencha-Amazon-Kindle-Fire.jpg" alt=""height="390" width="636">
        <figcaption>As part of <a href="http://www.sencha.com/blog/category/html5-developer-scorecard">our continuing series</a>, we ran the new Amazon Kindle Fire through our tests to see how it stacks up as an HTML5 app platform.</figcaption>
    </figure>

	<p>As part of our continuing series on the HTML5 capabilities of new mobile platforms, we&#8217;re taking the measure of the new <a href="http://www.amazon.com/Kindle-Fire-Amazon-Tablet/dp/B0051VVOB2">Amazon Kindle Fire</a>. When the Kindle Fire was announced, we were excited about getting our hands on it. As the first mass market tablet at the $200 price point, we knew it had a good shot at selling millions of units. But at the same time, we were apprehensive that Amazon might have skimped on hardware capabilities to reach that price. We were also concerned about the browser platform. The Fire runs a customized version of Android 2.3.4 (Gingerbread) and in the past, we&#8217;ve been disappointed with the quality and completeness of that browser. We were hoping that Amazon would improve the stock Gingerbread browser significantly.</p>

    <blockquote class="pullquote" style="width:265px;">
        <p><span>&ldquo;</span>The Kindle Fire is a competent but minimal HTML5 platform that reflects its $200 price and Android 2.x lineage.&rdquo;</p>
    </blockquote>

	<p>After putting the Kindle Fire through our test wringer, we can say that while it&#8217;s a solid browser for normal page browsing, it lags the best of the competition in HTML5 capabilities. Constrained by its Gingerbread foundation, it&#8217;s a competent but minimal HTML5 platform that reflects its $200 price point. At this stage in the tablet game, we would expect better.</p>

	<h3>Our First Look &#8220;Methodology&#8221;</h3>

	<p>Our HTML5 scorecard consists of a series of tests aimed to help mobile web developers understand new devices and new form factors as they come to market. We test in a number of areas, namely JavaScript performance, HTML5/CSS3 features, rendering performance and rendering accuracy. To get there, we use a variety of tests, including Modernizer, Acid3, SunSpider, Sencha Animator demos and our Sencha Touch Kitchen Sink.</p>

	<h3>Acid3 and Modernizr</h3>

	<p>The Fire scores a less than perfect 95/100 on the <a href="http://acid3.acidtests.org/">Acid3</a> test. Like other Android tablets, it lacks <span class="caps">SVG</span> support and incorrectly displays the Acid3 visual test compared to the reference implementation. With both the iPad2 and the BlackBerry PlayBook now scoring 100/100, this puts the Fire behind the pack. In addition. the Fire failed test 46 (media queries) and came in slower than required on three other tests including the self-described &#8220;challenging&#8221; test 26 for garbage collection speed.</p>

	<p>We then turned to <a href="http://www.modernizr.com/">Modernizr</a>, one of our favorite tools to look under the hood of a browser. Since the Fire hardware lacks a camera, an accelerometer and a <span class="caps">GPS</span>, some of the results (geolocation failure!) are predictable. What Modernizr did find was support for <span class="caps">CSS</span> 2D transforms and Canvas as well as other Android 2.x capabilities. Notably absent: 3D transforms, web sockets, web workers and many <span class="caps">HTML</span> form input types. Again, not that surprising considering the Android 2.x heritage.</p>

	<p>Happily, web fonts seem to be well supported. Both Google Fonts and Typekit dynamic fonts render correctly. But Typekit font loading and page scrolling on the Google Fonts page (with tens of different onscreen web fonts) was noticeably slow.</p>

	<h3>Performance Testing</h3>

	<p>When checking the user agent received, web servers report that our Fire was using WebKit version 533.1, which is much older than the WebKit found on the Xoom and PlayBook. On other hand, when the Kindle is put in &#8220;desktop browsing mode&#8221;, it advertises itself as Safari 5/Mac OS X/Webkit 533.16. Under the hood, according to the <a href="http://www.ifixit.com/Teardown/Amazon-Kindle-Fire-Teardown/7099/1">iFixit teardown</a>, the Fire contains a dual-core <span class="caps">ARM</span> processor, specifically the TI <span class="caps">OMAP</span> 4430, which is the same processor as the BlackBerry PlayBook. We therefore expected <a href="http://www.webkit.org/perf/sunspider/sunspider.html">SunSpider</a> scores in the same range as other tablets. As we&#8217;ve mentioned before, this current generation of tablets all ship with dual-core processors and all have roughly the same JavaScript optimizations. So the results are again fairly predictable.</p>

   <figure class="aligncenter">
        <img src="http://img1.sencha.com/files/misc/amazon-kindle-fire-sunspider.png" alt="Amazon Kindle Fire SunSpider results" height="416" width="636">
        <figcaption>For the most part, the Amazon Kindle Fire has similar SunSpider results compared to Apple iPad 2 and BlackBerry PlayBook.</figcaption>
    </figure>

	<p>The SunSpider tests are synthetic tests that push the JavaScript engine to its limit. So, next we turned our attention to some more real world tests, looking at CSS3 performance using our own Sencha Animator demos as well as a few other tests. </p>

	<p>We threw caution to the wind and started off on our most challenging CSS3 animation test, the <a href="http://dev.sencha.com/animator/demos/kickfu/">Kick Fu game</a> that was developed for the launch of Sencha Animator. While the game did play, the frame rate was poor and touch responsiveness while animations were running was also substandard. The Fire lacks a separate <span class="caps">GPU</span>, but the <span class="caps">CPU</span> has a competent <span class="caps">GPU</span> core &#8211; and even so, it looks like it wasn&#8217;t leveraged for hardware acceleration. The Playbook, for example, does a far better job leveraging the same <span class="caps">GPU</span> core. </p>

	<p>Next we tried simpler animations. The Fire performed more smoothly, but had a notably bad implementation of timing. In the video below, the wave movements are controlled by CSS3 animations and are declared at constant speed. Instead, the animation speeds of each element diverge and lag noticeably and visibly from each other. We&#8217;ve never seen artifacts of this magnitude before. This got us wondering about the Kindle&#8217;s general timer quality, so we ran John Resig&#8217;s <a href="http://ejohn.org/blog/accuracy-of-javascript-time/">classic JavaScript timer test</a> and found that the quality of the timer is similar to other Androids: with setInterval triggered every 10ms +5/-3s, with some noticeable latency spikes. (This compares to iOS 5&#8217;s best-in-class implementation of 10ms +/-1ms.) This isn&#8217;t supposed to matter as much once people get used to using requestAnimationFrame for JavaScript animations, but the Fire doesn&#8217;t have that either. </p>

    <figure class="aligncenter">
        <iframe src="http://player.vimeo.com/video/32230566?title=0&amp;byline=0&amp;portrait=0&amp;color=4CC208" width="600" height="450" frameborder="0" webkitAllowFullScreen allowFullScreen></iframe>
        <figcaption><a href="http://dev.sencha.com/animator/demos/rocking-boat/">CSS3 Animations</a> on the Amazon Kindle Fire</figcaption>
    </figure>

	<p>We also tested a few other real world areas for performance and correctness. We tried a Canvas based <a href="https://github.com/mojombo/ernie/network">GitHub network graph</a>. Rendering performance was fine and the result was accurate. Pinch/zoom happily also works although Android&#8217;s tendency to toggle into low-quality mode when moving content reared its head once again. We also tried out <a href="http://www.effectgames.com/demos/canvascycle/">Canvas Cycle</a> and it worked reasonably well. The frame rate was solid and we were able to change the scene without issue. However, like all webkit implementations, all bets were off when we zoomed and panned the page. Animation stuttered, froze and occasionally the accompanying audio cut out. We also looked at other Canvas animations and they worked at reasonable frame-rates.</p>

	<p>Finally we tested embedded HTML5 audio and video. HTML5 audio playback seemed to work well, although the default playback controls were tiny, hard to touch and didn&#8217;t seem to work very well. HTML5 video is &#8220;supported&#8217; but tapping play simply launches the video in the native player. Complete HTML5 video support with embedded playback and effects is not there. There also appears to be no Ogg Theora codec on the device as we couldn&#8217;t get any Ogg Theora demo to play.</p>

    <blockquote class="pullquote" style="float: none; width:auto;">
        <p><span>&ldquo;</span>The Kindle Fire doesn&#8217;t seem designed to run HTML5 apps as a primary goal.&rdquo;</p>
    </blockquote>

	<h3>Sencha Touch Kitchen Sink</h3>

	<p>Our <a href="http://dev.sencha.com/deploy/touch/examples/kitchensink/">Kitchen Sink app</a> is built with Sencha Touch and tests all aspects of our mobile web app framework. The Kitchen Sink gives mobile browsers a good workout as it exercises a huge set of browser features including a wide range of CSS3 effects.</p>

	<p>The first thing we noticed were the crispy <span class="caps">CSS</span> rounded corners. They&#8217;re not anti-aliased properly on the Fire. Webkit masks are also not supported. Then we got our first really big surprise of our run through. We found that the Kindle Fire has problems processing touch events with good responsiveness. <a href="http://arstechnica.com/gadgets/news/2011/11/dont-call-it-a-tablet-the-kindle-fire-reviewed.ars"> Update: and we&#8217;re not the only reviewers to notice this </a>. And similar to early <span class="caps">HTC</span> phones (since fixed), the OS and browser seem to fight over who gets touch events. Sencha Touch 2 was designed to adapt to this behavior, so the Touch 2 preview kitchen sink works better than the Touch 1 version. And of course, since the Fire is based on Android 2.x, full multi-touch with independently tracked touches is not supported either. </p>

	<p>As you&#8217;d expect with a device lacking a <span class="caps">GPU</span>, graphics effects like transitions were less than smooth, although display artifacts were not as bad as the full screen flashes and repaints that are a problem on honeycomb based tablets.</p></p>

	<h3>No to low Impact from &#8220;Accelerated Browsing&#8221;</h3>

	<p><img class="alignright" src="http://img1.sencha.com/files/misc/Amazon-Silk.jpg" alt="Amazon Silk" height="70" width="250"> One of the main selling points of the Kindle browser is supposed to be its cloud-caching and pipelined <span class="caps">HTTP</span> connection that uses the <span class="caps">SPDY</span> protocol. This does seem to speed up normal page browsing a little, but it&#8217;s not very noticeable and we didn&#8217;t test this rigorously. But for HTML5 web apps, where code is downloaded and executed, there doesn&#8217;t seem to be any performance difference when we tested with acceleration on and off. It doesn&#8217;t appear as if client JavaScript is executed on the server-side at all, so the Kindle does not seem to have Opera Mini-style server-side execution. And SunSpider scores were essentially the same when accelerated browsing was turned on or off.</p>

    <figure class="aligncenter">
        <iframe src="http://player.vimeo.com/video/32312934?title=0&amp;byline=0&amp;portrait=0&amp;color=4CC208" width="601" height="398" frameborder="0" webkitAllowFullScreen allowFullScreen></iframe>
        <figcaption><a href="http://t.co/cA4XIoaE">Side-by-side comparison</a> of accelerated vs. unaccelerated browsing for some popular web home pages.</figcaption>
    </figure>

	<h3>Kindle Fire: Suggestions for the HTML5 App Developer</h3>

	<p>In summary, the Amazon Kindle Fire doesn&#8217;t seem designed to run HTML5 apps as a primary goal. It does a good job of displaying ordinary web pages and its resolution and rendering capabilities meet that need well. But there are too many sharp edges, performance issues, and missing HTML5 features for us to recommend that any developer create web apps primarily for the Kindle Fire. The iPad 2 running iOS 5 continues to be the tablet to beat, with the PlayBook a respectable runner-up in HTML5 capabilities. </p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Thu, 17 Nov 2011 14:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/html5-scorecard-amazon-kindle-fire/#date:14:00</guid>
        </item>
        
        <item>
        <title>Sencha Touch Spotlight: Dyad Communications</title>
        <author>Guest</author>
        <description>
            Dyad Communications is a design firm located in Philadelphia, PA. We build sophisticated mobile websites that integrate the same aesthetic decisions our clients expect in our desktop and print work.
        </description>
        <link>http://www.sencha.com/blog/dyad-communications-spotlight/</link>
        <content:encoded>
            <![CDATA[
                <figure class="aligncenter">
      <img src="http://img1.sencha.com/files/misc/ppapc-hero.jpg" alt="iPad Screenshots" height="436" width="636"  />
      <figcaption>
         The tablet websites for Timothy Bryant architect and Peter Pennoyer Architects, built with Sencha Touch.<br />
<a href="http://www.sencha.com/apps/dyad-communications/" class="more-icon">View other apps by Dyad Communications in the App Gallery</a>
      </figcaption>
    </figure>

	<p><a href="http://www.dyadcom.com" class="right"><img src="http://img1.sencha.com/files/misc/dyad-logo.gif" alt="Dyad Communications design office" height="40" width="267"  /></a> <a href="http://www.dyadcom.com">Dyad Communications</a> is a design firm located in Philadelphia, PA. We build sophisticated mobile websites that integrate the same aesthetic decisions our clients expect in our desktop and print work. Our goal is to give clients the same experience on their mobile devices, like the iPhone and iPad, as they have on their desktop website or native apps.</p>

	<h3>Why We Chose Sencha Touch</h3>

	<p>Despite the imminent “demise” of Flash, our clientele remains adamant that we develop sites that operate with a level of design sophistication and elegance that require the use of Flash for a lot of our work. Of course, the lack of support for the Flash player in iOS left us with an issue: how do we best present clients’ websites on mobile devices, in a way that cohesively presents the pre-defined aesthetic of their Flash interface?</p>

	<blockquote class="pullquote right">
		<p class="pullquote right"><span>&#8220;</span>Using Sencha Touch, a small development team of 1-2 people can translate a large Flash site into an mobile HTML5 version within 3 weeks.&#8221;</p>
	</blockquote>

	<p>When Sencha Touch was released, we were impressed by the robust library of pre-built components and the responsiveness with which they performed. Suddenly, we could apply our proficiency with Web standards to create mobile re-interpretations that feel as rich as their desktop counterparts. It didn’t take us long to realize that the possibilities inherent in the Sencha Touch framework would help us to easily dive into the new challenges of mobile usability, without spending any time coding touch-based interaction logic.</p>

	<p>Sencha Touch provides a powerful framework for developing websites that feel like native apps. With Sencha Touch, we can easily implement a Carousel of large images that the user just swipes through like a native app. Using Ajax or <span class="caps">JSON</span>, it’s easy to tap into a new or existing content management system, pull data and place it onto a page. This makes it very easy to maintain multiple versions of a site, which is a key part of our efficient work philosophy.</p>

    <figure class="aligncenter clearing">
        <a style="float: left; margin-right:10px;" href="http://www.sencha.com/apps/wadia-associates/"><img src="http://src.sencha.io/200/http://img1.sencha.com/files/misc/wadia-associates-03.png" alt="Wadia Associates" title="Wadia Associates"></a>
        <a style="float: left; margin-right:10px;" href="http://www.sencha.com/apps/peter-pennoyer/"><img src="http://src.sencha.io/200/http://img1.sencha.com/files/misc/ppapc-01.png" alt="Peter Pennoyer Architects" title="Peter Pennoyer Architects"></a>
        <a style="float: left;" href="http://www.sencha.com/apps/les-metalliers-champenois/"><img src="http://src.sencha.io/200/http://img1.sencha.com/files/misc/les-metalliers-champenois-07.png" alt="Les Métalliers Champenois" title="Les Métalliers Champenois"></a>
        <figcaption><a href="http://www.sencha.com/apps/wadia-associates/">Wadia Associates</a>, <a href="http://www.sencha.com/apps/peter-pennoyer/">Peter Pennoyer Architects</a>, and <a href="http://www.sencha.com/apps/les-metalliers-champenois/">Les Métalliers Champenois</a><br />
Click through to view these Sencha Touch apps in the App Gallery.</figcaption>
    </figure>

	<h3>Business Value of Using Sencha Touch</h3>

	<p>Using Sencha Touch, a small development team of 1-2 people can translate a large Flash site into an mobile <span class="caps">HTML</span> version within 3 weeks. Smaller sites can be developed in a matter of days. This saves a considerable amount of time in development. Using the built-in components of Sencha Touch, we reduce development time by days since we don’t have to implement many usability features like Carousel swiping and multimedia loading including video and audio.</p>

	<p>It also reduces the time we spend debugging for other devices, such as Android, since Sencha Touch has built-in support for those devices. The reliable structure of Sencha Touch ensures that if the site is functional on one device, it will work comparatively on all other devices that support it. In the end, our clients get a robust mobile version of their desktop website that is enhanced with special touch features.</p>

    <figure class="aligncenter clearing">
        <a style="float: left; margin-right:10px;" href="http://www.sencha.com/apps/vella-interiors/"><img src="http://src.sencha.io/200/http://img1.sencha.com/files/misc/vella-interiors-05.png" alt="Vella Interiors" title="Vella Interiors"></a>
        <a style="float: left; margin-right:10px;" href="http://www.sencha.com/apps/timothy-bryany-architect/"><img src="http://src.sencha.io/200/http://img1.sencha.com/files/misc/timothybryant-06.png" alt="Timothy Bryant" title="Timothy Bryant"></a>
        <a style="float: left;" href="http://www.sencha.com/apps/hilton-vanderhorn/"><img src="http://src.sencha.io/200/http://img1.sencha.com/files/misc/hilton-vanderhorn-05.png" alt="Hilton Vanderhorn"></a>
        <figcaption><a href="http://www.sencha.com/apps/vella-interiors/">Vella Interiors</a>, <a href="http://www.sencha.com/apps/timothy-bryany-architect/">Timothy Bryant</a>, and <a href="http://www.sencha.com/apps/hilton-vanderhorn/">Hilton Vanderhorn</a><br />
Click through to view these Sencha Touch apps in the App Gallery.</figcaption>
    </figure>

	<h3>Our Advice to Developers</h3>

	<p>When approaching a new Sencha Touch project, we aim to incorporate the latest usability paradigms we see gaining traction in popular native apps with the aesthetic already defined in the Flash site we’re adapting. This means extending the <span class="caps">API</span> to build custom interactive components, so a strong understanding of <span class="caps">OOP</span> is a must. Getting your head wrapped around Sencha layout management is a great place to begin, and extensive use of the Sencha Touch <span class="caps">API</span> will give you many new options you didn’t know existed. If you are just starting out, Sencha offers very quick and easy video tutorials that give you a jumpstart on learning the basics about the Sencha Touch framework.</p>

	<h3>Final Thoughts</h3>

	<p>Sencha Touch has allowed us to open up new business opportunities with existing clients and expand the scope of what we can offer new clients without compromising time and profit. We highly recommend using Sencha Touch for not only apps but for mobile websites as well.</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Fri, 11 Nov 2011 16:59 GMT</pubDate>
        <guid>http://www.sencha.com/blog/dyad-communications-spotlight/#date:16:59</guid>
        </item>
        
        <item>
        <title>Sencha Touch Roadshow Coming to a City Near You</title>
        <author>Aditya Bansod</author>
        <description>
            Today we&apos;re excited to let you know that we&apos;re hosting a free roadshow at five cities in the United States to help developers get up to speed on HTML5 and also Sencha technologies. This free, half&#45;day workshop is designed to educate developers on how they can leverage HTML5 in mobile and how to build rich applications built on open standards. If you&apos;re new to HTML5 or new to mobile, this is the perfect workshop for you.
        </description>
        <link>http://www.sencha.com/blog/sencha-touch-roadshow-coming-to-a-city-near-you/</link>
        <content:encoded>
            <![CDATA[
                <figure class="aligncenter"><a href="http://www.sencha.com/products/touch/tour"><img src="http://img1.sencha.com/files/misc/sencha-touch-on-the-road.jpg" alt=""height="362" width="633"></a><figcaption>Catch up with Sencha Touch experts in 5 cities this December at <a class="more-icon" href="http://www.sencha.com/products/touch/tour">our free mobile HTML5 workshops</a>.</figcaption></figure>

	<p>It&#8217;s been a really exciting month of news in the mobile app development space. HTML5 is coming in to its own as the premier application platform for building mobile apps. And while it&#8217;s been around for a while, it&#8217;s still new and unfamiliar to a lot of developers. There are folks looking at HTML5 for the first time, as well as people who are looking to take their HTML5 skills to mobile.</p>

	<p>So, today we&#8217;re excited to let you know that <a href="http://www.sencha.com/products/touch/tour">we&#8217;re hosting a free roadshow at five cities in the United States</a> to help developers get up to speed on HTML5 and also Sencha technologies! This free, half-day workshop is designed to educate developers on how they can leverage HTML5 in mobile and how to build rich applications built on open standards. If you&#8217;re new to HTML5 or new to mobile, this is the perfect workshop for you.</p>

	<p>Bring your own laptop and join us to learn how to build mobile HTML5 applications. We’ll have Sencha experts on hand to show you the ropes of HTML5, and help walk you through app development in a fun, workshop environment. We’ll have coffee ready in the morning and work with you all the way through the free lunch in the afternoon. You’ll be building mobile web apps that work on the best touchscreen devices in no time.</p>

	<p>We&#8217;ll be covering the following three topics:</p>

	<ul>
		<li>HTML5 basics: what it is and how it’s different from other mobile platforms</li>
		<li>Sencha Touch 101: getting your environment ready, and getting started</li>
		<li>Building with Native Packaging: get your app to the App Store fast</li>
	</ul>

	<p>Space is limited, so if you&#8217;re interested, <a href="http://www.sencha.com/products/touch/tour">sign up now</a>!</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Thu, 10 Nov 2011 12:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/sencha-touch-roadshow-coming-to-a-city-near-you/#date:12:00</guid>
        </item>
        
        <item>
        <title>Apple iOS 5: HTML5 Developer Scorecard</title>
        <author>Aditya Bansod</author>
        <description>
            Whenever a new device or mobile operating system comes out, we do a HTML5 Developer Scorecard, to help folks who are building mobile web apps understand how to take advantage of these new devices. Today, we look at HTML5 on Apple’s iOS 5.
        </description>
        <link>http://www.sencha.com/blog/apple-ios-5-html5-developer-scorecard/</link>
        <content:encoded>
            <![CDATA[
                <p><img class="alignleft" src="http://img1.sencha.com/files/misc/iPhone-4S-Sencha.png" alt="Apple iPhone 4S with Sencha logo" width="250"> Whenever a new device or mobile operating system comes out, we do our HTML5 Developer Scorecard to help folks who are building mobile web apps understand how to take advantage of these new devices. In early October, iOS 5 (and the iPhone 4S) was released. In our last few reviews, iOS has come head and shoulders above other device platforms as the best platform for HTML5 developers. High performance, hardware accelerated rendering, super quick JavaScript, and speed of adoption of new HTML5 features, it&#8217;s been the best platform to build modern web apps on.</p>

<blockquote class="pullquote">
    <p><span>&ldquo;</span>Mobile Safari continues to hold the crown as the best mobile browser, providing the best HTML5 developer platform.&rdquo;</p>
</blockquote>

 <p style="clear:both;">The latest Mobile Safari on iOS 5 continues in that tradition. Mobile Safari continues to hold the crown as the best mobile browser, providing the best HTML5 developer platform as well as adding new features and improving others.</p>

	<p>As usual, we looked at the basics of the browser: JavaScript and <span class="caps">HTML</span>/CSS rendering. For raw JavaScript execution speed, iOS 5 (with the iPhone 4S) isn&#8217;t much of a surprise and looks a lot like any other dual-core mobile device (such as the PlayBook and the iPad 2). It scored 2,275ms on the SunSpider benchmark: a solid score, but nothing new in the current hardware landscape. Things that iOS was good at continued to be good, such as smooth and fast hardware accelerated CSS3 transitions and animations. Our typical Sencha Animator tests ran smoothly and continued to render at a higher frame-rate than any other mobile device we&#8217;ve seen.</p>

	<p>Given how good Mobile Safari has been, we didn&#8217;t run the browser through the usual paces we would have. Instead for this HTML5 Developer Scorecard, we took a look at the things that are new or better on the latest Mobile Safari:</p>

	<ul>
		<li><strong>Canvas is crazy fast</strong>. In iOS 5, Canvas is between 5x &#8211; 8x faster. We tried two examples to see this work. First, the IE HTML5 <a href="http://ie.microsoft.com/testdrive/Performance/SpeedReading/default.html">Speed Reading</a> Test. In iOS 4.x, the draw durations last roughly ~850ms, versus iOS 5, where they are a constant 10ms. Since that might be too synthetic, we also tried the Flash Canvas <a href="http://flashcanvas.net/examples/accelart.jp/blog/CanvasBench/CanvasBenchFlashCanvas.html">image manipulation benchmark</a>. It reports the number of milliseconds the manipulation sequence takes. On iOS 4.x, this was ~19,000ms, but on iOS 5 it reported ~450ms. As with all benchmarks, take the result with a grain of salt, but for game developers building on Canvas, iOS 5 is a <strong>much</strong> more attractive platform for graphics.</li>
	</ul>

	<ul>
		<li><img class="alignright" src="http://img1.sencha.com/files/misc/WebGL_logo.png" alt="WebGL logo"><strong>WebGL is supported</strong>. Sort of. If you&#8217;re an iAd developer, you can use WebGL in your ads, but you can&#8217;t use it through Mobile Safari or through a wrapped UIWebView. This is a limitation put in place intentionally by Apple as it&#8217;s possible to <a href="http://atnan.com/blog/2011/11/03/enabling-and-using-webgl-on-ios/">work around</a> the restriction in a wrapped UIWebView, but only by linking to private <span class="caps">API</span>s &#8212; which means you can&#8217;t submit the resulting app to the app store.</li>
	</ul>

	<ul>
		<li><strong>You can use compass directions</strong>! The DeviceOrientationEvent now supports compass headings via a new webkitCompassHeading property. The property gives you the device&#8217;s orientation relative to magnetic north. Check out James&#8217; <a href="http://jamesgpearce.github.com/compios5/">sample</a> on your iOS 5 device to see it working.</li>
	</ul>

	<ul>
		<li><strong>Better <span class="caps">CSS</span> <code>position</code> and <code>overflow</code> support</strong>. In iOS 5, <code>position: fixed</code> and <code>overflow: scroll</code> both work. If you&#8217;re looking to add some scrollable areas with native feeling bounce, you can now do it with these <span class="caps">CSS</span> properties. You don&#8217;t get a ton of control but if you&#8217;re looking to have a scrollable area in your web app, this is a really quick way to get it. There&#8217;s also a special iOS property, <code>-webkit-overflow-scrolling: touch</code>, which changes the scroll behavior to be more &#8220;iPhone&#8221;-like.</li>
	</ul>

	<ul>
		<li><strong>WebWorkers work!</strong> In our testing we confirmed that WebWorkers &#8212; the <span class="caps">API</span> to let you spin up background &#8220;threads&#8221; is now enabled in iOS 5. It makes sense that this arrives just as the iPhone goes multi-core. This is great for developers who need to do some background processing in their application. That can be data updates to a server, or preprocessing some information, or anything else you can imagine when you don&#8217;t want to block the main browser UI thread. Now that iOS 5 has support for the <span class="caps">API</span>, we&#8217;re interested to see how it&#8217;ll end up being used in mobile (and in using it ourselves).</li>
	</ul>

	<ul>
		<li><strong>HTML5 form fields are supported</strong>, including number, range, and date picker. This is great for an HTML5 developer because iOS now opens the appropriate on-screen keyboard based on the input tag type.</li>
	</ul>

	<ul>
		<li><strong>XmlHttpRequest, level 2 is supported</strong>. Anybody who builds complex apps that use <span class="caps">XHR</span> to talk to a server is used to the hacks that <span class="caps">XHR</span> level 1 required. In iOS 5, <span class="caps">XHR</span> level 2 is supported so you can use capabilities like cross-origin support, binary data support, and more.</li>
	</ul>

	<p><img class="alignright" src="http://img1.sencha.com/files/misc/apple-ios5.jpg" alt="Apple iOS5 icon" height="165" width="153"> Mobile Safari in iOS 5 continues Apple&#8217;s tradition of delivering a first class browser and innovating in device <span class="caps">API</span>s. Of course, there are more we&#8217;d like to see soon, primarily the MediaCapture <span class="caps">API</span>s so web developers can get better access to the device camera. We&#8217;re particularly happy about the super-fast Canvas and really interested to see what developers will do with WebWorker support in mobile. </p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Fri, 04 Nov 2011 16:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/apple-ios-5-html5-developer-scorecard/#date:16:00</guid>
        </item>
        
        <item>
        <title>The Sencha Hackathon Recap</title>
        <author>James Pearce</author>
        <description>
            SenchaCon in Austin last week really reaffirmed our belief in the strength of the Sencha community &#45; and most especially on day three, when we hosted our biggest ever Sencha Hackathon.
        </description>
        <link>http://www.sencha.com/blog/the-sencha-hackathon-recap/</link>
        <content:encoded>
            <![CDATA[
                <p><img class="alignright rounded shadow" src="http://src.sencha.io/240/http://img1.sencha.com/files/misc/senchacon-hackathon-slide.jpg" alt="The Sencha Hackathon Recap"> There are hackthons. And then there is the SenchaCon hackathon.</p>

	<p>Day three of our awesome conference in Austin last week really reaffirmed our belief in the strength of the Sencha community. I&#8217;ve rarely seen such a concentration of talent, enthusiasm, and friendship&#8212;not mention amazing productivity&#8212;come together so well.</p>

	<p>We wanted to stimulate competition and organized a number of prize categories for the event. The Google Chrome team sponsored the event as a whole, and also kindly offered Chromebook hardware as a prize for &#8216;Best use of HTML5 <span class="caps">API</span>&#8217;. We also offered &#8216;Best Desktop&#8217; and &#8216;Best Mobile&#8217; categories, as well as spot prizes for additional interesting application categories.</p>

	<p>Once our introductory pleasantries were over, we decided to make sure that teams could get coding as quickly as possible. The amicable vibe of the whole conference helped immediately, as cohesive groups quickly formed around exciting ideas that community members proposed.</p>

    <figure class="aligncenter clearing">
        <a style="float: left; margin-right:10px;" href="http://www.flickr.com/photos/nils-dehl/6287802051/"><img src="http://src.sencha.io/205/http://farm7.static.flickr.com/6055/6287802051_e154fbe0d8_m.jpg" alt=""></a>
        <a style="float: left; margin-right:10px;" href="http://www.flickr.com/photos/nils-dehl/6288322832/"><img class="photomatte" src="http://src.sencha.io/205/http://farm7.static.flickr.com/6116/6288322832_c8f6687b1f_m.jpg" alt="Hackathon hackers."></a>
        <a style="float: left;" href="http://www.flickr.com/photos/nils-dehl/6288321780/"><img src="http://src.sencha.io/205/http://farm7.static.flickr.com/6092/6288321780_1ce717cb81_m.jpg" alt="Arthur Kay"></a>
        <figcaption style="clear:both;">Hackathon hackers. Photos by <a href="http://www.flickr.com/photos/nils-dehl/">Nils Dehl</a>.</figcaption>
    </figure>

	<p>Caffeine, power, and a decent wifi connection are the other ingredients required to keep teams working hard during the day. We just about managed all three, and certainly the arrival of the Red Bull support team helped any flagging programmers get through the final few hours.</p>

	<p>By the time we reached 4pm&#8212;after over 6 hours of frantic coding, an astonishing 20 teams were ready to jump up onto our vast stage and present the results.</p>

	<p>And what results they were: we had news visualizations, signal strength detectors, web-based file sharing, games, database administration tools, collaborative drawing and learning tools, social networks, and many many more. The variety was almost as amazing as the quality.</p>

    <figure class="aligncenter clearing">
        <a style="float: left; margin-right:10px;" href="http://www.flickr.com/photos/nils-dehl/6288323098/"><img src="http://src.sencha.io/205/http://farm7.static.flickr.com/6099/6288323098_bf0d1968e5_m.jpg" alt=""></a>
        <a style="float: left; margin-right:10px;" href="http://www.flickr.com/photos/nils-dehl/6287803939/"><img class="photomatte" src="http://src.sencha.io/205/http://farm7.static.flickr.com/6112/6287803939_736d6bc0d6_z.jpg" alt="Hackathon hackers."></a>
        <a style="float: left;" href="http://www.flickr.com/photos/nils-dehl/6287802935/"><img src="http://src.sencha.io/205/http://farm7.static.flickr.com/6235/6287802935_a28dd27288_m.jpg" alt="Andrea Cammarata"></a>
    </figure>

	<p>After a very tough judging session, we announced the main winners. And they were:</p>

 <h4>Best use of an HTML5 <span class="caps">API</span>: Lamp Post</h4>

	<p>Multi-user music file sharing using Chrome&#8217;s File <span class="caps">API</span>, featuring real-time chat and notification of shared directories using a Node JS backend with <a href='https://github.com/storminwalker/node-extjs'>node-extjs</a>. The team won a Chromebook and $500, kindly sponsored by Google Chrome.</p>

 <h4>Best Desktop App: Code Cowboys</h4>

	<p>A crowd-sourced unit testing application for Ext JS and Sencha Touch. The team won an iPad 2 and $500.</p>

 <h4>Best Mobile / Tablet App: Presencha</h4>

	<p>Upload slides in <span class="caps">PDF</span> form, and present live to any device for collaborative viewing by an audience. The team won an iPad 2 and $500.</p>

	<p>The <a href="http://www.presencha.com/">Presencha</a> team have made their code available on <a href="https://github.com/cianclarke/Presencha">GitHub</a>, and are aiming to have their service available soon.</p>

	<p>We then had a number of additional categories which teams were gunning for. Each of these teams won $250.</p>

	<p><strong>Best Social App: LinkedUp</strong><br />
A mobile social network for entrepreneurs and innovators.</p>

	<p><strong>Best Austin-related App: Dirty 6th</strong><br />
Shows bars, clubs and other venues near a user&#8217;s location or and in downtown Austin.</p>

	<p><strong>Best Educational App: <a href='http://www.box.net/shared/fuyl92f0e98mocy89ugv'>iKnow</a></strong><br />
A mobile application to learn or memorize anything</p>

	<p><strong>Best App by a Novice Team: Doodleshare</strong><br />
A screen-sharing application to allow games such as Charades and Pictionary on mobile and tablet devices.</p>

	<p>We also had two discretionary prizes for apps that impressed the judges above and beyond these categories. These were <strong>TouchMySql</strong> and the <strong>German Rockstars</strong> team.</p>

	<p>At events like this, we hope that every one feels they are a winner! If you were there, I hoped you enjoyed the experience of being able to rub shoulders with your peers and the Sencha teams. It was an awesome way to wrap up the whole conference, and we look forward to hosting you all next year!</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Wed, 02 Nov 2011 17:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/the-sencha-hackathon-recap/#date:17:00</guid>
        </item>
        
        <item>
        <title>SenchaCon 2011&#8212;The Mega Recap</title>
        <author>Michael Mullany</author>
        <description>
            SenchaCon 2011 was an awesome event for the team and the community. We had over 600 attendees attending more than 50 unique sessions, a rocking party and a fantastic hackathon. Here&apos;s the highlights of last week&apos;s mega&#45;event!
        </description>
        <link>http://www.sencha.com/blog/senchacon-2011-recap/</link>
        <content:encoded>
            <![CDATA[
                <p><img class="aligncenter" src="http://img1.sencha.com/files/misc/SenchaCon-Thank-You-blog-image.jpg" alt="SenchaCon 2011" height="292" width="636"></p>

	<p>We had a fantastic time last week in Austin, hosting the Sencha Community for SenchaCon 2011! Once again, we had record attendance, with over 600 developers attending more than 50 sessions over two days, and a full day hackathon that produced some pretty impressive apps. We were incredibly humbled by the huge commitment that so many of the community made to spend three days engaging with the Sencha team and sharing their experiences with us and with each other. </p>

	<p>At Sencha, we want to equip application developers to create the next generation of awesome apps. What we&#8217;ve seen in the last four years is a huge discontinuity in how and where end-users want to interact with data and content. The most obvious trend is the rise of mobile devices, but equally as important is the now-ubiquitous integration of social sharing and the emergence of HTML5 as the consensus technology platform of the future. As we go forward, we see a world with an ever-increasing diversity of devices and device <span class="caps">API</span>s. It&#8217;s a world where HTML5 powers the client apps, and they&#8217;re enriched with local <span class="caps">API</span>s that execute on everything from traditional desktops to Smart TV&#8217;s. And cloud services provide the fabric that enables continuous, shared experiences across the diversity of end-devices. We think this is the platform for the web.</p>

	<p>It&#8217;s clear that the world is going through what we call &#8220;The Big App Rewrite&#8221;. And one of our big goals at SenchaCon was to outline how our products are going to evolve to help you create applications for that world. As we shared in our keynote, we&#8217;re focused on the three building blocks you&#8217;ll need to build your apps: frameworks, tools and cloud services. In frameworks, we showed off the latest in Ext JS 4, Sencha Touch 2 and Ext <span class="caps">GWT</span> 3. In tools, we demonstrated the latest in Sencha Designer and Animator. And we were also very excited to launch the full set of Sencha.io mobile cloud services. </p>

	<p><img class="aligncenter" src="http://img1.sencha.com/files/misc/aditya-bansod-sencha-platform.jpg" alt="Aditya Bansod details the Sencha Platform." height="375" width="600"></p>

	<h3>The Big Announcements and Introductions!</h3>

	<p>As mentioned above, SenchaCon attendees got first look at some pretty cool stuff that we&#8217;ve been working on. We&#8217;ll be blogging about these in more detail soon. But here are the highlights:</p>

	<ul>
		<li>The official beta of Sencha.io&#8212;an insanely easy-to-use set of mobile cloud services designed to plug easily into Sencha Touch.</li>
		<li>The developer preview of Sencha Designer 2.0, now with support for creating Sencha Touch apps, event bindings, code editing and even native packaging</li>
		<li>The preliminary performance numbers from Ext JS 4.1 showing the 2x performance improvement we&#8217;ve been able to engineer over 4.0</li>
		<li>Live demos of the developer preview of Sencha Touch 2 showing the much improved Android and orientation change performance</li>
		<li>The latest preview of the all-new Ext <span class="caps">GWT</span> 3 with Cell-based data widgets, Cell-based fields, a new data <span class="caps">API</span>, new charts, and theming.</li>
	</ul>

	<p>We also announced that we&#8217;ve raised another $15M in Series B funding. The round was led by Jafco Ventures with the participation of our existing funding partners, Sequoia Capital and Radar Partners. We&#8217;d like to welcome Jafco to the Sencha community!</p>

	<p><img class="aligncenter" src="http://img1.sencha.com/files/misc/aditya-bansod-apps.jpg" alt="Aditya Bansod shows off the rich app economy produced with Sencha technologies." height="412" width="613"></p>

	<h3>The Ever Growing Sencha Community</h3>

	<p>There are now over 1.6 million Sencha developers in 201 countries and in 33 different timezones. And 300,000 of you are now registered on our forums. We truly are a worldwide community!  We&#8217;ve had 68 meet ups this year! And we&#8217;re proud to say that we see more and more community members starting up new groups in your cities. We gave sneak peeks of a couple of really cool things coming down the road for the community and our partners. The first was a new partnership program that adds two new tiers of service partnerships to the existing community tier of www.senchadevs.com. (We&#8217;ll be rolling this out fully in Q1 of next year.) And we also showed a super-fast sneak peek of the Sencha Marketplace, a listing service for the community to showcase their user extensions, themes, templates and plugins. We&#8217;re really excited about this and look forward to your feedback as we move toward launching this. </p>

	<p><img class="aligncenter" src="http://img1.sencha.com/files/misc/sencha-community.jpg" alt="Sencha community members" height="412" width="613"></p>

	<p><img class="alignright" src="http://img1.sencha.com/files/misc/jacky-nguyen.jpg" alt="Jacky Nguyen delivered a great presentation on the Sencha Class System." height="200" width="289"></p>

	<h3>The Top Rated Sessions</h3>

	<p>This year&#8217;s session content got a huge thumbs up&#8212;thanks in part to listening to all of your suggestions from last year&#8217;s SenchaCon. By far the crowd favorite of the conference was Jacky Nguyen&#8217;s commanding performance on the new Ext JS 4 class system. Jacky also showed off some very cool performance wizardry for Sencha Touch that we hope to ship in Touch 2. In addition, we want to give a special shout-out to Craig Walker of Xero, whose node.js session also got huge thumbs up from our crowd. </p>

	<h3>Slides and Video Recordings</h3>

	<p>The Sencha Team and all our community code presenters made a huge effort to create fantastic content for this year&#8217;s conference. And soon, we&#8217;ll be able to share it with the whole community. We&#8217;ll start uploading session slides later this week, and as soon as the videos are finished in post-processing we&#8217;ll also be releasing those. Conference attendees will be able to access videos first, but shortly thereafter, we&#8217;ll release them to the general community. </p>

	<p>We had an awesome time hosting SenchaCon 2011. We want to thank everyone for their amazing contributions and we look forward to seeing you at the next conference!</p>
                <style>
                    .right, .alignright { float: right; margin: 0 0 10px 10px; }
                    .left, .alignleft { float: left; margin: 0 10px 10px 0; }
                </style>
            ]]>
        </content:encoded>
        <pubDate>Tue, 01 Nov 2011 17:00 GMT</pubDate>
        <guid>http://www.sencha.com/blog/senchacon-2011-recap/#date:17:00</guid>
        </item>
        
    </channel>
</rss>
