<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:series="http://organizeseries.com/"
> <channel><title>SitePoint &#187; Mobile Web Discussion</title> <atom:link href="http://www.sitepoint.com/category/web-discussion/feed/" rel="self" type="application/rss+xml" /><link>http://www.sitepoint.com</link> <description>Learn CSS &#124; HTML5 &#124; JavaScript &#124; Wordpress &#124; Tutorials-Web Development &#124; Reference &#124; Books and More</description> <lastBuildDate>Mon, 13 May 2013 13:12:07 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.5.1</generator> <item><title>Build a Responsive, Mobile-Friendly Website From Scratch: CSS stylesheet</title><link>http://www.sitepoint.com/build-a-responsive-mobile-friendly-website-from-scratch-css-stylesheet/</link> <comments>http://www.sitepoint.com/build-a-responsive-mobile-friendly-website-from-scratch-css-stylesheet/#comments</comments> <pubDate>Tue, 07 May 2013 07:10:27 +0000</pubDate> <dc:creator>Annarita Tranfici</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Development]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Mobile Web Tutorials]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5731</guid> <description><![CDATA[In the fourth part of her series, Annarita Tranfici introduces the first CSS rules in order to have a general idea of the graphic style that the homepage will display.]]></description> <content:encoded><![CDATA[<p></p><p>In the last article of this series, I’ve shown how to start building a website from scratch with a particular focus on the HTML code and its main elements.</p><p>Now it&#8217;s time to introduce the first CSS rules in order to have a general idea of the graphic style that the homepage of our website will display, especially for the pc-desktop version.</p><p>First of all, before having a look on the rules we have to apply in order to create a particular design for our homepage, let&#8217;s see how it will appear in our browser window (my default browser is Chrome but, with the application of some specific rules, you&#8217;ll be able to obtain the same result for all modern web-browsers).</p><p>The homepage of our totally customizable website should look more or less as following:</p><p><a
href="http://buildmobile.com/files/2013/04/website-screenshot-desktop-version.png"><img
class="wp-image-5732 aligncenter" alt="website-screenshot-desktop-version" src="http://buildmobile.com/files/2013/04/website-screenshot-desktop-version-1024x910.png" width="614" height="546" /></a>As you can see, I have imagined a very big banner to allow the designer to express all his creativity and chosen colors that combine in a clear and positive way (I really love them!). Having said that, let&#8217;s dive deep into the code.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>As for the HTML section, in this case we&#8217;ll proceed step-by-step from the upper part of our layout to the bottom part. The code for the very first part (which includes the elements of banner, newsletter bar and menu) will be shown piece after piece with a very short comment, as for the other items of the page.</p><p>The first one is the banner element, with this code for styling:</p><pre class="brush: css; title: ; notranslate">
#banner
{
   width: 100%;
   margin-top: 0.2em;
}
</pre><p>These first rules simple enough to understand. To space the banner from the top of the browser window we&#8217;re applying a margin of 0.2em and to let our banner-image cover all the width of our browser&#8217;s window, we&#8217;ve set the corresponding rule with a percentage of 100.</p><p>Let&#8217;s go on with the rules for styling our newsletter-box. In this case we have to pay attention for the rules to put on the id and the ones to consider for the class since I have decided, for personal clarity, to not choose different names for elements that substantially indicate the same part. So, for the class we set a background color (which will be the color of the box and a margin-top of 0.2 em&#8211;you&#8217;ll find out why it&#8217;s better to use these kind of measurements for a responsive website in <a
title="Responsive Web Design: Using Fonts Responsively" href="http://buildmobile.com/understanding-responsive-web-design-how-to-manage-fonts/">this</a> article, which will give you a short overview on the most common units used in Web Design) to slightly space the newsletter-box from the banner above.</p><p>The id &#8220;newsletter-box&#8221;, that is the space where we&#8217;ll find the input field and the submit button, has three simple rules, to define the spacing with the box that contains the above-mentioned elements. As you can see, there&#8217;s an id (&#8220;mobile-newsletter-box&#8221;) that seems to be inappropriate to the version we&#8217;re analysing.  Actually, it&#8217;s not so: since there&#8217;ll be a change of view when passing from a pc-desktop version to a tablet version or a mobile-phone one, we have to &#8220;suggest&#8221; to our stylesheet how to perform and display the page elements.</p><p>In this case, as you&#8217;ll see in the next article when we&#8217;ll discuss about the rules to set thinking responsively, the disposition of all the elements characterizing the newsletter bar will totally change. What we have to do now is avoid having the mobile-display shown in the pc-desktop version. To achieve this result, we simply set to the rule &#8220;display&#8221; the none parameter.</p><p>A nice effect I&#8217;d like to talk about is the transition I have applied to the white box where the user inserts his e-mail to receive news. Setting to the element a transition, the resulting effect is an enlargement of the box; the other thing I&#8217;ve done is to indicate the time that this has to last. This is a CSS3 rule that creates a simple and light movement with a very pleasant output.</p><p>The last rule to discuss is the width applied when the newsletter box is clicked: setting this to 17em, the box will appear larger than usual.</p><pre class="brush: css; title: ; notranslate">
.newsletter-box
{
   background-color: #c32526;
   margin-top: 0.2em;
}
#newsletter-box
{
   margin-top: 0.5em;
   height: 1.8em;
   padding: 0.3em;
}
#mobile-newsletter-box
{
   display: none;
}
#newsletter-email
{
   width: 12em;
   -webkit-transition: all 1s;
   -moz-transition: width 1s;
   -o-transition: width 1s;
   -ms-transition: width 1s;
   transition: width 1s;
}
#newsletter-email:focus
{
   width: 17em;
}
</pre><p>Let&#8217;s go on now analyzing our navigation bar. To delete the default bullet points of our menu list, we set the parameter to none, while to center it we recourse to the well-known rule &#8220;text-align: center&#8221;. Then we change the padding and the margin rules to the size that seems to be appropriate for our purpose. To let the elements of the list appear one after another horizontally, we change the display from the default setting &#8220;block&#8221; to &#8220;inline&#8221; and also, in this case, specify the margin parameters.</p><p>Now, it&#8217;s time to have a look at the rules applied to the link elements: as font, I&#8217;ve chosen &#8220;Bebas Neue&#8221; (you can download it <a
title="Bebas Neue font" href="http://www.dafont.com/bebas-neue.font">here</a>). I&#8217;ve set a font-size of 1.3 em, removed the underlining with the rule &#8220;text-decoration: none&#8221; and set the color I preferred. This color changes when the cursor moves on the menu items and, moreover, when the user clicks on the link of the page he desires to visit, there&#8217;s a 3D effect, and you can obtain it setting the rule &#8220;position: relative&#8221; on the menu links and the parameters top and left on the active state of the same element. In this way, you&#8217;ll have a slight movement that will give you the impression of a clickable 3D button.</p><pre class="brush: css; title: ; notranslate">ul.menu-list
{
   list-style-type: none;
   padding: 0;
   margin: 1em 0em;
   text-align: center;
}
li.menu-item
{
   display: inline;
   margin: 0em 1.5em;
}
a.menu-item-link
{
   font-family: &quot;Bebas Neue&quot;,Calibri,Arial,Helvetica,sans-serif;
   font-size: 1.3em;
   text-decoration: none;
   color: #c31f05;
position: relative;
}
a.menu-item-link:hover
{
   color: #000000;
}
a.menu-item-link:active
{
   top: 0.1em;
   left: 0.1em;
}
#menu-select
{
   display: none;
}
</pre><p>Now, move on to the general part, that is on the rules applied to elements such as heading, paragraphs, images, boxes appearance and so on. Here is the code with the specifications of the rules for the layout I have thought out, planned and realized.</p><pre class="brush: css; title: ; notranslate">
body
{
   max-width: 1024px;
   margin: 0 auto;
   font-family: &quot;Cwmagic&quot;,Calibri,Arial,Helvetica,sans-serif;
   background-color: #E3E3E3;
   font-size: 1.2em;
   line-height: 1.5em;
}
img
{
   border: 0em;
}
h1,
h2,
h3
{
   text-align: center;
}
.float-left
{
   float: left;
}
.float-right
{
   float: right;
}
.clear-both
{
   clear: both;
}
.shadow
{
   -webkit-box-shadow: 0.4em 0.4em 0.2em #5C5B5B;
   -moz-box-shadow: 0.4em 0.4em 0.2em #5C5B5B;
   -o-box-shadow: 0.4em 0.4em 0.2em #5C5B5B;
   -ms-box-shadow: 0.4em 0.4em 0.2em #5C5B5B;
   box-shadow: 0.4em 0.4em 0.2em #5C5B5B;
   margin-right: 0.4em !important;
}
.long-box,
.small-box
{
   background-color: #cdcdcd;
   padding: 0em 0.3em;
   margin: 0em;
   margin-bottom: 1em;
}
.small-box
{
   width: 47%;
}
p
{
   margin-top: 0;
   margin-bottom: 0.5em;
}
</pre><p>I won&#8217;t explain the rules one by one as for the first part, especially because they are almost all the same. The only thing to which I&#8217;d like you&#8217;d pay attention is the classes float left, float right and clear both; in fact, I&#8217;ve preferred to create a class which &#8220;identifies&#8221; these rules and applies them to the elements in the HTML code rather than repeating the elements. Another element worthy of note is the CSS3 rule &#8220;<a
title="box-shadow" href="http://www.css3.info/preview/box-shadow/">shadow</a>&#8220;.</p><blockquote><p>This property allows designers to easily implement multiple drop shadows (outer or inner) on box elements, specifying values for color, size, blur and offset.</p><p>It can accept a comma-separated list of shadows, each defined by 2-4 length values (specifying in order the horizontal offset, vertical offset, optional blur distance and optional spread distance of the shadow), an optional color value and an optional ‘inset‘ keyword (to create an inner shadow, rather than the default outer shadow).</p><p>Browser support is growing of late with Mozilla (Firefox), Webkit (Safari/Chrome/Konqueror), Opera and the IE9 Platform Preview all offering a decent implementation of the specification.</p></blockquote><p>Let&#8217;s conclude this article with the rules applied to elements present in the footer, that is the footer itself and the bar containing the icons for the linking to the most important social networks&#8217; profile.</p><pre class="brush: css; title: ; notranslate">
#main-footer
{
   background-color: #c32526;
   text-align: center;
}
.social-bar a
{
   text-decoration: none;
   margin-right: 3em;
}
</pre><p>Finally, let&#8217;s see how to manage fonts in the CSS stylesheet, bearing in mind that Internet Explorer requires a different format for the fonts, that is &#8220;eot&#8221;. Here is the code.</p><pre class="brush: css; title: ; notranslate">
/*
 ***********************************
     FONT FOR INTERNET EXPLORER
 ***********************************
*/
@font-face
{
   font-family: &quot;Bebas Neue&quot;;
   src: url(../css/bebasneue.eot);
}
@font-face
{
   font-family: &quot;Palatino Linotype&quot;;
   src: url(../css/pala.eot);
}
/*
 ***********************************
       FONT FOR OTHER BROWSERS
 ***********************************
*/
@font-face
{
   font-family: &quot;Bebas Neue&quot;;
   src:
      local(&quot;Bebas Neue&quot;),
      local(&quot;Bebas Neue&quot;),
      url(&quot;../css/bebasneue.ttf&quot;);
}
@font-face
{
   font-family: &quot;Palatino Linotype&quot;;
   src:
      local(&quot;Palatino Linotype&quot;),
      local(&quot;Palatino Linotype&quot;),
      url(&quot;../css/pala.ttf&quot;);
}
</pre><h2>Conclusion</h2><p>In this article we&#8217;ve seen the basic rules to create a simple layout for a website. After concentrating on the pc-desktop version, in the next part we&#8217;ll see which are the rules to apply to make this layout responsive.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/build-a-responsive-mobile-friendly-website-from-scratch-css-stylesheet/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <series:name><![CDATA[Build a Responsive, Mobile-Friendly Website From Scratch]]></series:name> </item> <item><title>Build a Responsive, Mobile-Friendly Website From Scratch: Semantic HTML</title><link>http://www.sitepoint.com/build-a-responsive-mobile-friendly-website-from-scratch-dive-into-the-code/</link> <comments>http://www.sitepoint.com/build-a-responsive-mobile-friendly-website-from-scratch-dive-into-the-code/#comments</comments> <pubDate>Tue, 16 Apr 2013 17:37:35 +0000</pubDate> <dc:creator>Annarita Tranfici</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Development]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Mobile Web Tutorials]]></category> <category><![CDATA[mobile]]></category> <category><![CDATA[Tutorials]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5691</guid> <description><![CDATA[In the last article, as promised, we&#8217;ve begun doing some practical work with the planning and creation of a mockup. Now, we’ve focused on how to build a personal project wireframe thinking responsively and—consequently—how a responsive design can adapt to three target layouts: Default (PC desktop), Portrait Tablet, and Smartphone. We’ve seen how to arrange [...]]]></description> <content:encoded><![CDATA[<p></p><p>In <a
title="Build a Responsive, Mobile-Friendly Website From Scratch: Design a Mockup" href="http://buildmobile.com/build-a-responsive-mobile-friendly-website-from-scratch-design-a-mockup/" target="_blank">the last article</a>, as promised, we&#8217;ve begun doing some practical work with the planning and creation of a mockup. Now, we’ve focused on how to build a personal project wireframe thinking responsively and—consequently—how a responsive design can adapt to three target layouts: Default (PC desktop), Portrait Tablet, and Smartphone.</p><p>We’ve seen how to arrange the elements of a typical website in the three main devices’ categories by creating a template that represents the common content elements. In this third part of this series, I’ll concentrate on writing the HTML code and work on the structure of the homepage, while in the very next, I&#8217;ll be setting the first CSS styling rules to build the initial design of our project.</p><h3>First Step: HTML code</h3><p>Let&#8217;s begin building the structure of our website through the use of HTML code. To avoid confusion and miss some steps, we&#8217;ll proceed by dividing the layout into three parts, just like we did during the mockup design phase. We&#8217;ll pause from time to time on parts of the code that are inherent only to that single part. The first part we&#8217;ll face with will of course be the header, that is the part that in our mockup consists of the following elements: banner, newsletter-box, and main menu bar. Now, what we have to do as our first task is declare the type document that for HTML5 is indicated in the following way:<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><pre class="brush: xml; title: ; notranslate">&lt;!DOCTYPE html&gt;</pre><p>Next, we must add the section that is necessary to help the web browser to interpret the content in the following body section. This section contains specific tags, CSS stylesheets, and other elements that remain hidden and are not displayed in the browser. These elements are generally called <strong>meta information</strong> (basically &#8220;information about information&#8221;) because their function is to describe what kind of information is on the page.</p><p>The first meta-tag which needs a specification is &#8220;meta charset&#8221;; it defines what character coding is used in the page. In our case, we set it to UTF-8, which is a variable width Unicode format compatible with ASCII or plain text for the basic alphanumeric characters. By using the &#8220;upper half&#8221; of the 8-bit ASCII set and extension codes, it can handle over a million unique characters.</p><p>It&#8217;s a requirement that any web page defines the formatting of the page within it&#8217;s header info so that all the browsers know exactly how to read and interpret the content. Otherwise, they&#8217;ll show the characters using their &#8220;best guess,&#8221; which isn&#8217;t always accurate. The guess could be wrong, and this will lead to showing the wrong characters to the users.</p><p>The next item we have to pay attention to is the <strong>viewport</strong> property. Setting a viewport tells the browser how content should fit on the device&#8217;s screen and informs the browser that the site is optimized for mobile. For example&#8230;</p><pre class="brush: xml; title: ; notranslate">&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;</pre><p>&#8230;tells the browser to set the viewport to the width of the device with an initial scale of 1. After this, we insert into the title tag the name we&#8217;ve chosen for our website. Finally, we have to link our HTML page to the <strong>CSS stylesheets</strong> that we&#8217;ll use to define the style of our homepage; the HTML &#8220;link&#8221; element specifies relationships between the current document and other documents. With this line of code&#8230;</p><pre class="brush: xml; title: ; notranslate">&lt;link rel=&quot;stylesheet&quot; href=&quot;css/common.css&quot; type=&quot;text/css&quot; /&gt;</pre><p>&#8230;we link the document to the common stylesheet (that is, the document which contains all the common CSS rules that will be shared by the three versions of the project), while this one&#8230;</p><pre class="brush: xml; title: ; notranslate">&lt;link rel=&quot;stylesheet&quot; href=&quot;css/responsive.css&quot; type=&quot;text/css&quot; /&gt;</pre><p>&#8230;recalls to the file where there are the specifications of the particular rules that will be applied only to that particular device indicated. Please note that since we&#8217;re using HTML5, you don&#8217;t actually need to specify <code>type="text/css"</code>.</p><p>Close the head tag and move on to the <strong>body</strong> section. At this point, we have to create two separate divs: one for the <strong>banner</strong>, and one for the <strong>newsletter box</strong>.</p><p>In the first, in addition to the id, it&#8217;s a good practice for accessibility to use a WAI-ARIA role; generally roles describe widgets and structure. Structural roles are added to markup as attributes of elements, which makes it perfect for our purposes.</p><p><strong>WAI-ARIA</strong> (<em>Web Accessibility Initiative &#8211; Accessible Rich Internet Applications</em>) is a technical specification published by the World Wide Web Consortium that specifies how to increase the accessibility of web pages. It allows web pages (or portions of pages) to declare themselves as applications rather than as static documents by adding role, property, and state information to dynamic web applications in order to make controls and content updates accessible to users with disabilities. That&#8217;s why all these kinds of specifications are so important.</p><p>Let&#8217;s continue our project by building a <strong>newsletter opt-In form</strong>. first of all, add a form with &lt;form&gt; tags. The opening tag should include the form name, a method which can be either &#8220;query&#8221; or &#8220;post,&#8221; and the destination or &#8220;action&#8221; where the form should send the input (I put a # to indicate that it is not fixed).</p><p>Now, add a text field with a label to collect the email address and assign an ID and a class for the following changes of style you might apply to your form. Finally, add a submit button to the form. The information put into the form fields will be sent to the receiving page for processing when the visitor clicks the submit button. Insert the word &#8220;Submit&#8221; for the input type, name and value fields to create a submit button, and close the form and div tags.</p><p>So, at this point, you should have the following code:</p><pre class="brush: xml; title: ; notranslate">&lt;!DOCTYPE html&gt;
&lt;html&gt;
   &lt;head&gt;
      &lt;meta charset=&quot;UTF-8&quot;/&gt;
      &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
      &lt;title&gt;Website name&lt;/title&gt;
      &lt;link rel=&quot;stylesheet&quot; href=&quot;css/common.css&quot; type=&quot;text/css&quot; /&gt;
      &lt;link rel=&quot;stylesheet&quot; href=&quot;css/responsive.css&quot; type=&quot;text/css&quot; /&gt;
  &lt;/head&gt;
   &lt;body&gt;
      &lt;header&gt;
         &lt;div id=&quot;banner&quot; role=&quot;banner&quot;&gt;&lt;/div&gt;
         &lt;div id=&quot;newsletter-box&quot;&gt;
            &lt;form name=&quot;newsletter-form&quot; action=&quot;#&quot; method=&quot;post&quot;&gt;
               &lt;label for=&quot;newsletter-email&quot;&gt;Newsletter:&lt;/label&gt;
               &lt;input type=&quot;email&quot; id=&quot;newsletter-email&quot; class=&quot;newsletter-email&quot; name=&quot;email&quot; required=&quot;required&quot; placeholder=&quot;Your email&quot; /&gt;
               &lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Submit&quot; /&gt;
            &lt;/form&gt;
         &lt;/div&gt;
      &lt;/header&gt;</pre><p>Let&#8217;s proceed with the central part of our layout, namely the one used for different types of content.</p><p>First and foremost, let&#8217;s create a classic <strong>menu</strong>, composed of five options that will be the main categories of the whole website: Homepage, News, Graphics, Mobile, and Web Design. In this case, the element most suitable for our purpose is the <strong>nav</strong> element, which is a semantic element used for declaring a navigational section of a website (that is, a section of a page that links to other pages or to parts within the page).</p><p>Within the nav tag, let&#8217;s add an unordered list (to which we&#8217;ll assign a class called &#8220;menu-item&#8221;). For the content section, let&#8217;s create a main div whose ID is &#8220;content&#8221;, a wrapper div, and put an article within it. The <strong>article</strong> element is a specialized kind of section; it has a more specific semantic meaning as an independent, self-contained part of the page. In our sample, it&#8217;ll be used to contain the description of the purpose of our website.</p><p>As for the wrapper div, it will contain three more elements: a div which contains all the information about the author (and a photo,if you want), an aside in which the author can add his screencasts, and another aside intended for his latest tweets. Two points on the <strong>aside</strong> element: it is used for tangentially-related content. However, in the interpretation of this new element there lies some confusion as to how it should be used; remember that just because some content appears to the left or right of the main content isn’t enough reason to use the aside element. The better way to decide whether you should use an aside or not involves asking yourself if the content within the aside can be removed without reducing the meaning of the main content or if the main content is truly dependent on the aside. Pullquotes, glossaries, or even related links are some examples of tangentially related content that are appropriate for an aside.</p><p>The code for this second part is the following:</p><pre class="brush: xml; title: ; notranslate">
      &lt;nav class=&quot;menu&quot;&gt;
         &lt;ul class=&quot;menu-list&quot;&gt;
            &lt;li class=&quot;menu-item&quot;&gt;
               &lt;a class=&quot;menu-item-link&quot; href=&quot;./homepage&quot; title=&quot;Homepage&quot;&gt;Homepage&lt;/a&gt;
            &lt;/li&gt;
            &lt;li class=&quot;menu-item&quot;&gt;
               &lt;a class=&quot;menu-item-link&quot; href=&quot;./news&quot; title=&quot;News&quot;&gt;News&lt;/a&gt;
            &lt;/li&gt;
            &lt;li class=&quot;menu-item&quot;&gt;
               &lt;a class=&quot;menu-item-link&quot; href=&quot;./graphics&quot; title=&quot;Graphics&quot;&gt;Graphics&lt;/a&gt;
            &lt;/li&gt;
            &lt;li class=&quot;menu-item&quot;&gt;
               &lt;a class=&quot;menu-item-link&quot; href=&quot;./mobile&quot; title=&quot;Mobile&quot;&gt;Mobile&lt;/a&gt;
            &lt;/li&gt;
            &lt;li class=&quot;menu-item&quot;&gt;
               &lt;a class=&quot;menu-item-link&quot; href=&quot;./webdesign&quot; title=&quot;Web Design&quot;&gt;Web Design&lt;/a&gt;
            &lt;/li&gt;
         &lt;/ul&gt;
      &lt;/nav&gt;
      &lt;div id=&quot;content&quot;&gt;
         &lt;article id=&quot;description-box&quot;&gt;
            &lt;h3&gt;Title&lt;/h3&gt;
            &lt;p&gt;
               Your content here
            &lt;/p&gt;
         &lt;/article&gt;
         &lt;div id=&quot;wrapper&quot;&gt;
            &lt;div id=&quot;author-info-box&quot;&gt;
               &lt;p&gt;
                  Information about the author &lt;br /&gt;
               &lt;/p&gt;
            &lt;/div&gt;
	    &lt;aside id=&quot;video-box&quot;&gt;
               &lt;video&gt;
 &lt;source src=&quot;movie.mp4&quot; type='video/mp4;' /&gt;
 &lt;source src=&quot;movie.webm&quot; type='video/webm;' /&gt;
&lt;/video&gt;
            &lt;/aside&gt;
            &lt;aside id=&quot;twitter-box&quot;&gt;
               &lt;p&gt;
                  &lt;img class=&quot;twitter-bird&quot; src=&quot;./images/twitter-bird.png&quot; alt=&quot;Twitter Bird&quot; /&gt;
                  Follow me on Twitter! &lt;br /&gt;
                  We're in (number of follower)
               &lt;/p&gt;
            &lt;/aside&gt;
               &lt;br class=&quot;clear-both&quot; /&gt;
         &lt;/div&gt;
      &lt;/div&gt;
</pre><p>The last remaining part is the section called <strong>footer</strong>, which generally contains information about its sections, the author, links to related documents, copyright data, and so on. In some cases, you can also find links to profiles or personal pages of ubiquitous social networks such as Facebook, Twitter, Google+, and LinkedIn. So, we place the principal information in a paragraph inserted in the new HTML5 tag &lt;footer&gt; and the links directed to the social profiles mentioned above in a div whose main class is named &#8220;social-bar&#8221;.</p><p>Here is the code of this last part:</p><pre class="brush: xml; title: ; notranslate">
      &lt;footer id=&quot;main-footer&quot;&gt;
         &lt;p&gt;
            Author's name. All rights reserved. Copyright &amp;copy; 2012 - 2013.
         &lt;/p&gt;
         &lt;div class=&quot;social-bar&quot;&gt;
            &lt;a href=&quot;./facebook&quot; title=&quot;Facebook&quot;&gt;
               &lt;img src=&quot;./images/icons/facebook.png&quot; alt=&quot;Facebook icon&quot; /&gt;
            &lt;/a&gt;
            &lt;a href=&quot;./twitter&quot; title=&quot;Twitter&quot;&gt;
               &lt;img src=&quot;./images/icons/twitter.png&quot; alt=&quot;Twitter icon&quot; /&gt;
            &lt;/a&gt;
            &lt;a href=&quot;./googleplus&quot; title=&quot;Google+&quot;&gt;
               &lt;img src=&quot;./images/icons/google.png&quot; alt=&quot;Google+ icon&quot; /&gt;
            &lt;/a&gt;
            &lt;a href=&quot;./linkedin&quot; title=&quot;LinkedIn&quot;&gt;
               &lt;img src=&quot;./images/icons/linkedin.png&quot; alt=&quot;Linkedin icon&quot; /&gt;
            &lt;/a&gt;
         &lt;/div&gt;
      &lt;/footer&gt;
   &lt;/body&gt;
&lt;/html&gt;
</pre><h3>Conclusion</h3><p>In this article, we&#8217;ve seen how to start building a website from scratch with a particular focus on the HTML code and its main elements. In the next article, I&#8217;ll introduce the first CSS rules in order to have a general idea of the graphic style that the homepage of our website will display. Once we pass this step, we&#8217;ll concentrate on the aspects and the procedures to be followed to convert our static homepage into a responsive homepage that will be viewed correctly on numerous different devices.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/build-a-responsive-mobile-friendly-website-from-scratch-dive-into-the-code/feed/</wfw:commentRss> <slash:comments>4</slash:comments> <series:name><![CDATA[Build a Responsive, Mobile-Friendly Website From Scratch]]></series:name> </item> <item><title>Build a Contacts Management App Using HTML5, JS, CSS3, and Wakanda Studio</title><link>http://www.sitepoint.com/build-contacts-app-with-html5-css-javascript-wakanda-studio/</link> <comments>http://www.sitepoint.com/build-contacts-app-with-html5-css-javascript-wakanda-studio/#comments</comments> <pubDate>Thu, 07 Mar 2013 18:32:09 +0000</pubDate> <dc:creator>Saad Mousliki</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Development]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Mobile Web Tutorials]]></category> <category><![CDATA[HTML5 Tutorials & Articles]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[Mobile Tools]]></category> <category><![CDATA[Tutorials]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5571</guid> <description><![CDATA[Many years ago, JavaScript developers were considered second-class citizens in the programming world. JavaScript was only used to perform some easy client-side tasks such as alert messages, form validation, and style manipulation. Nobody was convinced to use it for intensive programming applications due to its limitations and several serious security problems. But, in the past [...]]]></description> <content:encoded><![CDATA[<p></p><p>Many years ago, JavaScript developers were considered second-class citizens in the programming world. JavaScript was only used to perform some easy client-side tasks such as alert messages, form validation, and style manipulation. Nobody was convinced to use it for intensive programming applications due to its limitations and several serious security problems.</p><p>But, in the past few years with the arrival of HTML5, JQuery, NodeJS, WebRTC, Google API, and others, JavaScript has become a mature language for developing a robust business applications via server-side coding, NoSQL Databases, JSON format, REST for communication and many other worthy methods.</p><p>In this article, we will prove how possible (and even <em>easy</em>) it is to develop a mobile web application that retrieves the phone contacts on disconnected mode and retrieves contacts from a remote server in connected mode using HTML5, JavaScript, and CSS3. We&#8217;ll package it using PhoneGap to build to a native mobile app that will work online and offline.</p><h3>Background</h3><p>Before starting using this guide, you should have some basics on HTML5, JavaScript, and the mobile development world. In this article, I&#8217;ll also use the <a
href="http://doc.wakanda.org/Datastore/Datastore.100-588923.en.html" target="_blank">Wakanda DataStore</a> as a NoSQL database that will be remotely added by our native app to get data using REST/HTTP and JSON format, so having some basics on Wakanda could be very helpful.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><h3>Using The Code</h3><p><strong>Application Architecture</strong></p><p
style="text-align: center"><img
class="aligncenter  wp-image-5572" alt="application-architecture" src="http://buildmobile.com/files/2013/03/application-architecture.png" width="542" height="230" /></p><p>The PhoneGap build input for this mobile application is freely available for download. It&#8217;s a zip file developed using the Wakanda Studio smartphone part. The bundle contains numerous noteworthy files.</p><p>First and most importantly, it contains the index.html file, which is the main page of our application. This page has three views: one for the homepage that contains two buttons to choose between connected or disconnected mode, a view containing a grid that will load data from the remote Wakanda Server, and a third view that contains a richText widget, which will load the list of mobile contacts using the PhoneGap contact API.</p><p
style="text-align: center"><img
class="aligncenter  wp-image-5573" alt="phonegap-build-input" src="http://buildmobile.com/files/2013/03/phonegap-build-input-533x1024.png" width="320" height="614" /></p><p
style="text-align: left">The second file worth mentioning is the config.xml file. This XML file provides some necessary settings to the PhoneGap build service. which to package the app and prepare it for mobile devices. Below is the config.xml data.</p><pre class="brush: xml; title: ; notranslate">
&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?--&gt;
    GET CONTACTS
        An application that gets contacts from DataStore and also from phone
        Saad Mousliki
</pre><p>(You could take a look to <a
href="https://build.phonegap.com/docs/config-xml" target="_blank">the official PhoneGap documentation</a> to learn more about how to write this file.)<br
/> Two additional noteworthy files are splash.png and icon.png. These two files serve as the splash screen and the icon that will be displayed when installing the packaged app on your mobile device.</p><p>Next is the walib folder, which contains the WAF (Wakanda Application Framework) API—a set of JavaScript libraries used to manipulate UI, HTTP/REST communication, mapping, etc.</p><p>And, of course, the widely-used scripts and styles folders, which contain the JavaScript and CSS files used by the mobile app.</p><p>(Note: To learn more about how to create this application using Wakanda Studio and pre-package it to be accepted by PhoneGap, take a look to <a
href="http://doc.wakanda.org/Quick-Start/Quick-Start.100-695763.en.html" target="_blank">this guide</a> and <a
href="http://hackanda.wordpress.com/" target="_blank">this blog</a>.)</p><h3>The HTML5 Interface</h3><p>The HTML5 page is generated using the Wakanda Studio GUI Designer with the dragging and dropping of widgets and careful styling using the properties tabs. Below is an example of a Wakanda HTML5 interface in progress; lets go through the surprisingly-easy process of designing the interface for our mobile app.</p><p
style="text-align: center"><img
class="aligncenter  wp-image-5574" alt="properties-tab" src="http://buildmobile.com/files/2013/03/properties-tab.png" width="598" height="307" /></p><h4>Step 1</h4><p>After installing the Wakanda Studio version 3, open the studio by double clicking its icon. Click on the &#8220;Create New Solution&#8221; button.</p><p
style="text-align: center"><img
class="aligncenter  wp-image-5575" alt="solution-button" src="http://buildmobile.com/files/2013/03/solution-button.png" width="598" height="249" /></p><h4 style="text-align: left">Step 2</h4><p
style="text-align: left">Give a name to your solution e.g. “CreateHTML5Page.” Check the “Add a blank project to the solution” checkbox and click the &#8220;OK&#8221; button.</p><p
style="text-align: center"><img
class="aligncenter  wp-image-5576" alt="ok-button" src="http://buildmobile.com/files/2013/03/ok-button.png" width="473" height="376" /></p><h3>Step 3</h3><p>Now, click on the “WebFolder” folder and double-click on the index.html file.</p><p
style="text-align: center"><img
class="aligncenter  wp-image-5577" alt="index-file" src="http://buildmobile.com/files/2013/03/index-file.png" width="315" height="431" /></p><h3>Step 4</h3><p>Go to the right side of the studio; you will find an arrow to choose between platforms: desktop, tablet, or smartphone. Choose the smartphone page.</p><p
style="text-align: center"><img
class="aligncenter  wp-image-5578" alt="smartphone-page" src="http://buildmobile.com/files/2013/03/smartphone-page.png" width="599" height="325" /></p><h4>Step 5</h4><p>At this step, the page is empty and should be designed using the widget tab on the left and the properties tab on the right. First, we will add a navigation widget to the page by dragging and dropping the desired widget onto the page.</p><p
style="text-align: center"><img
class="aligncenter  wp-image-5579" alt="widget" src="http://buildmobile.com/files/2013/03/widget.png" width="598" height="521" /></p><h4>Step 6</h4><p>After that, we must add some views (navigation options) to the navigation views widget using the properties tab of this widget.</p><p
style="text-align: center"><img
class="aligncenter  wp-image-5580" alt="widget-tab" src="http://buildmobile.com/files/2013/03/widget-tab.png" width="501" height="461" /></p><h4>Step 7</h4><p>Now, we will add a pair of buttons to the first view.</p><p
style="text-align: center"><img
class="aligncenter  wp-image-5581" alt="first-view" src="http://buildmobile.com/files/2013/03/first-view.png" width="599" height="369" /></p><p>You could modify the button titles and other properties (width, height, color, etc.) using the properties tab on the right side.</p><h4 style="text-align: left">Step 8</h4><p
style="text-align: left">To specify an event to the button, we should click on the events button on the right side tab and choose the “onClick” event.</p><p
style="text-align: center"><img
class="aligncenter  wp-image-5582" alt="onclick" src="http://buildmobile.com/files/2013/03/onclick.png" width="599" height="369" /></p><h4>Step 9</h4><p>For example, we could add code that allows switching between views. We will use the navigation view method “goToNextView”, so when we click on this button we will go to the View number 2. Look below for clarity.</p><p
style="text-align: center"><img
class="aligncenter  wp-image-5583" alt="view2" src="http://buildmobile.com/files/2013/03/view2.png" width="587" height="331" /></p><pre class="brush: jscript; title: ; notranslate">
button1.click = function button1_click (event)
{
$$(&quot;navigationView3&quot;).goToNextView();
}
</pre><p>(Note: To learn more on how to create a mobile web app using Wakanda Studio, take a look to <a
href="http://www.youtube.com/watch?v=GZKWZbWF7g4">this video</a> for a step-by-step description of how to create and test mobile apps on an iPod.)</p><p>After creating a page, we should pre-package (prepare it to be packaged by PhoneGap build) it using the step-by-step described in <a
href="http://hackanda.wordpress.com/">this blog</a>.</p><h3>Retrieving Contacts Using the PhoneGap Contact API<strong></strong></h3><p>The following JavaScript code will be executed when the &#8220;Get contacts from phone&#8221; button is clicked.</p><pre class="brush: jscript; title: ; notranslate">
var options = new ContactFindOptions(), name, phoneNumber;
options.filter = &quot;&quot;;
options.multiple = true;
var fields = [&quot;name&quot;, &quot;phoneNumbers&quot;];
function onSuccess(contacts) {
var res = &quot;&quot;;
for(var index = 0, len = contacts.length; index &lt; len; index++) { name = contacts[index].name; name = name != null ? name.formatted : &quot;&quot;; phoneNumber = contacts[index].phoneNumbers; phoneNumber = phoneNumber != null &amp;&amp; phoneNumber.length &gt; 0 ? phoneNumber[0].value : &quot;&quot;;
res += name + &quot;   : &quot; + phoneNumber + &quot;n&quot;;
}
$$('textField2').setValue(res);
navView.goToView(3);
}
function onError() {
alert('onError!');
}
navigator.contacts.find(fields, onSuccess, onError, options);
</pre><p>For  more details about this code, take a look to <a
href="http://docs.phonegap.com/en/1.0.0/phonegap_contacts_contacts.md.html">the PhoneGap contact API</a>. <b></b></p><h3>Package the App Using PhoneGap Build</h3><p><a
href="http://www.youtube.com/watch?v=1TyMqnfrDFo">This video</a> will show you how to package the web app, starting by uploading the .zip file to getting the .ipa file. For the complete description, we&#8217;ll start by downloading the .zip file offered at the beginning of this article and unzipping it.</p><p>Take the &#8220;Client_Side&#8221; folder within the .zip file and zip it to get the desired input file for the PhoneGap build service.</p><p><img
class="aligncenter size-full wp-image-5584" alt="phonegap-build" src="http://buildmobile.com/files/2013/03/phonegap-build.png" width="488" height="261" /></p><p>You should have an account on PhoneGap build to upload and build the application, so if you don&#8217;t have an account yet, you could create one.</p><p>After creating an account, go to the apps page, upload the zip file (Client_Side.zip), and build it! Look below for clarity.<b></b></p><p
style="text-align: center"><img
class="aligncenter  wp-image-5585" alt="zip-file" src="http://buildmobile.com/files/2013/03/zip-file.png" width="598" height="355" /></p><h3>Setting Up Server-Side Elements<b></b></h3><p><b> </b>For the server-side application, you should take the &#8220;Server_Side&#8221; folder and run it on Wakanda 3 Server, using a command line or Wakanda Studio. The command line is:</p><p><b>&#8220;C:Wakanda Server.exe&#8221;  &#8221;C:Download the applicationServer_SidegetPhoneContact SolutiongetPhoneContact.waSolution&#8221;  </b><b></b></p><p>After that, you should go to the &#8220;Client_Side&#8221; folder, and within the &#8220;scripts&#8221; folder, open the index-smartphone.js and add the IP address of the machine where you have hosted your Wakanda application on the following lines:</p><pre class="brush: jscript; title: ; notranslate">
WAF.config.baseURL = &quot;http://@IP_of_the_Wakanda_Server:8081&quot;;
WAF.core.restConnect.defaultService = 'cors';
WAF.core.restConnect.baseURL = &quot;http://@IP_of_the_Wakanda_Server:8081&quot;;
WAF.onAfterInit = function onAfterInit() { // @lock
// @region namespaceDeclaration// @startlock
var documentEvent = {}; // @document
var button2 = {}; // @button
var button1 = {}; // @button
</pre><p>Now, you could access the Wakanda DataStore remotely using the WAF API. <b> </b></p><p>(Note: To build the .ipa for your iPhone, you should provide a provisioning key and the password of your Apple store account.)</p><h3>Conclusion</h3><p>This application is a simple demonstration of Wakanda Studio, as well as a much greater testament to the capabilities of HTML5, JavaScript, and CSS3 for the creation of powerful mobile apps. Using the process of development used in this example (from HTML5, JavaScript, and CSS to native app), we could deliver a cross-platform native mobile application in very little time, so by using PhoneGap, a developer with little background in Java or Objective-C can start developing native mobile apps for many mobile platforms simultaneously. Developing this application, testing it, and packaging it using PhoneGap build took be less than a day&#8217;s work.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/build-contacts-app-with-html5-css-javascript-wakanda-studio/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Understanding Responsive Web Design: Responsive Imagery</title><link>http://www.sitepoint.com/understanding-responsive-web-design-how-to-manage-images/</link> <comments>http://www.sitepoint.com/understanding-responsive-web-design-how-to-manage-images/#comments</comments> <pubDate>Wed, 27 Feb 2013 17:34:32 +0000</pubDate> <dc:creator>Annarita Tranfici</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Discussion]]></category> <category><![CDATA[mobile]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5536</guid> <description><![CDATA[In this fifth part of our Understanding Responsive Web Design series, I&#8217;ll show you one of the typical problems that a web designer faces when building a responsive website: the management of the images. As you&#8217;ve seen so far, the challenges that a mobile designer faces are numerous, and it&#8217;s not so strange or unusual [...]]]></description> <content:encoded><![CDATA[<p></p><p>In this fifth part of our <a
title="Understanding Responsive Web Design" href="http://buildmobile.com/series/understanding-responsive-web-design/" target="_blank">Understanding Responsive Web Design</a> series, I&#8217;ll show you one of the typical problems that a web designer faces when building a responsive website: the management of the images. As you&#8217;ve seen so far, the challenges that a mobile designer faces are numerous, and it&#8217;s not so strange or unusual to think that one of the biggest is serving multiple image formats to multiple screen sizes. There are currently three strategies that a developer can choose when it comes to responsive imagery: he can choose between: &#8220;fighting&#8221; the browser, &#8220;resigning&#8221; himself, or relying on the server. Let&#8217;s try to understand the advantages and downsides of each option.<br
/> <span
id="more-65956"></span></p><h3>Fighting the Browser</h3><p>Most front-end developers choose to apply the first strategy and fight the browser. What does &#8220;fighting the browser&#8221; stand for? It means doing your best to give the &#8220;right&#8221; image (that is, the image that has the correct size for the device used to view the website) to the browser so that it can be loaded before the browser had downloaded the &#8220;wrong&#8221; one (that is, the &#8220;default&#8221; or the desktop version of the image). This is an increasingly difficult task, as modern browsers and ever-quickening bandwidth means that users try to download images as quickly as possible.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><h3>Resigning</h3><p>Sometimes the simplest and most comfortable strategy is the only viable option: admit defeat. Generally, this approach involves loading the default image onto small screens, and secondly, if necessary, loading a larger image for screens with larger dimensions. While this method is easy and straightforward, it&#8217;s not recommended, because in the second case, two requests are sent to the browser when only one is necessary.</p><h3>Relying on the Server</h3><p>The third strategy involves the use of the server, a server-side programming language and some basic forms of detection to determine which image to load. All of the logic is executed before the browser is able to see and interpret the HTML code. Unfortunately, this strategy has its own flaws: the act of maintaining an ever-growing list of mobile devices and screen sizes would become very complicated and require constant upkeep.</p><p>To help you understand better what this technique does and how it can be used, let&#8217;s consider an example. In the following example, I&#8217;ll show you a few lines of PHP, but don&#8217;t worry, you don&#8217;t have to me a PHP expert to create responsive images, and you&#8217;ll understand the example even if you haven&#8217;t worked with PHP before. Let&#8217;s assume that you&#8217;re creating a page dynamically and that you&#8217;re injecting an <code>&lt;img&gt;</code> tag using the following line of code:</p><pre class="brush: php; title: ; notranslate">echo '&lt;img src=&quot;heavy-image.png&quot; /&gt;';</pre><p>As you might already know, mobile connections aren&#8217;t nearly as fast as their desktop counterparts. So, to speed up the rendering of your page for mobile devices, you&#8217;d like to inject a lightweight version of the image if the user is using&#8230; perhaps an iPhone. What you can do server-side is check the user-agent that made the request and—if the device was an iPhone—inject the smaller image. The next snippet demonstrates this technique:</p><pre class="brush: php; title: ; notranslate">
if (strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone') === false) {
  // Not an iPhone
  echo '&lt;img src=&quot;heavy-image.png&quot; /&gt;;
}
else {
  // An iPhone
  echo '&lt;img src=&quot;light-image.png&quot; /&gt;;
}
</pre><p>As you can see, the method is very easy to implement, however this approach isn&#8217;t very reliable because the user-agent information itself isn&#8217;t 100% reliable. If the method fails, you could have some glaring problems with your imagery.</p><h3>Is One Method Better Than The Others?</h3><p>Obviously, each approach has its own unique advantages and limitations, and it&#8217;s unlikely that one single method will be the ideal choice for all of your mobile projects. However, there are some additional techniques and resources that a developer may use to create responsive images.</p><h4>Sencha.io Src</h4><p>The first option is very fast and simple. It is a service developed by James Pearce that returns the image you choose to load resized to fit your exact needs. Its name is Sencha.io Src, and all you have to do is put the Sencha.io Src URL location of your image as the image&#8217;s source.</p><pre class="brush: xml; title: ; notranslate">&lt;img src=&quot;http://src.sencha.io/http://mysite.com/images/my-image.jpg&quot; /&gt;</pre><p>The service uses the user agent string of the requesting device to determine the desired image size and resize the image accordingly. By default, the image is scaled to 100% of the width of the screen. Sencha.io Src has a high level of customization; it&#8217;s possible to set a specific width or any other parameter. For example, if you want to set the image width to 250 pixels, you have simply to add the size into the URL as follows:</p><pre class="brush: xml; title: ; notranslate">&lt;img src=&quot;http://src.sencha.io/250/http://mysite.com/images/my-image.jpg&quot; /&gt;</pre><p>The service also caches the request, so the image will not be reloaded each time the page is loaded.</p><h3>Adaptive Images</h3><p>A similar solution is proposed by Matt Wilcox. It involves determining the size of the screen first, and then creating (and caching) a scaled version of the correct image dimensions. This is an ideal technique to make the images of an existing website responsive. After downloading the code (which you can find at <a
href="http://adaptive-images.com/" target="_blank">adaptive-images.com</a>), to make this solution operational and running properly, you need to follow three simple steps:</p><ol><li>Add two files, <strong>.htaccess</strong> and <strong>adaptive-images.php</strong>, to the root folder;</li><li>Create a cache folder and allow write permission;</li><li>Add the following line of Javascript code at the beginning of your document:</li></ol><pre class="brush: jscript; title: ; notranslate">&lt;script&gt;document.cookie='resolution='+Math.max(screen.width,screen.height)+'; path=/';&lt;/script&gt;</pre><p>Thanks to this one line of code, the screen resolution is captured and stored in a browser cookie. It&#8217;s possible to configure multiple options in the file adaptive-images.php, but the primary purpose of the file is setting the variables for the resolutions (<code>$resolutions</code>).</p><pre class="brush: php; title: ; notranslate">$resolutions = array (800, 480, 320);</pre><p>These resolutions are the &#8220;breakpoints&#8221; of images based on the screen resolution (a width to be measured in pixels). In this case, This tool will serve out a small, mobile-friendly image for devices with a pixel width of 320 or smaller. If the display exceeds 320 pixels, the new reference value is 480, which is the next numerical value in the array above.</p><p>Once created, the images will be stored in the cache folder (where you can change the filename), so that you will no longer need to generate them.</p><p>In addition to what I showed, I want to highlight that the key point of the discussion on adaptive images concerns their size. This is certainly an important factor, but we often forget that it is not the only one. For example, resizing an image for smaller displays often reduces the impact and the recognition of the image. In these cases, it may be necessary to modify the image. Even a simple cropping of the edges or of the superfluous elements can help the image retain it&#8217;s impact and significance at a smaller size.</p><h3>Conclusion</h3><p>In this article I described three ways to work with with images from a responsive design point of view. The first is fighting the browser—that is, doing your best to give to the browser the &#8220;right&#8221; image to download. The second is choosing services like Sencha.io which use the user agent string of the device from which the request is sent to understand screen size and resize the image accordingly. The last involves to adaptive images—in this case, the developer only needs to determine the size of the screen and the image will scale to accommodate.</p><p>In conclusion, between the three approaches discussed above, the one of the adaptive images is probably the best solution as it requires no dependency to another site or link. In the next articles in the series, we&#8217;ll examine other methods that a developer can use to manage all the images of a responsive website.</p><p><em>Want to learn more about Responsive Web Design? Check out SitePoint&#8217;s new book, <a
href="http://www.sitepoint.com/books/responsive1/" target="_blank">Jump Start Responsive Web Design</a>!</em></p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/understanding-responsive-web-design-how-to-manage-images/feed/</wfw:commentRss> <slash:comments>6</slash:comments> <series:name><![CDATA[Understanding Responsive Web Design]]></series:name> </item> <item><title>5 Essential Elements of a Successful Business App</title><link>http://www.sitepoint.com/5-essential-elements-of-a-successful-business-app/</link> <comments>http://www.sitepoint.com/5-essential-elements-of-a-successful-business-app/#comments</comments> <pubDate>Mon, 25 Feb 2013 18:10:57 +0000</pubDate> <dc:creator>Kyle Sanders</dc:creator> <category><![CDATA[Android Discussion]]></category> <category><![CDATA[iOS Discussion]]></category> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Windows Phone Discussion]]></category> <category><![CDATA[Business]]></category> <category><![CDATA[Discussion]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5531</guid> <description><![CDATA[The ever-growing population of smartphone owners has led more and more companies to develop mobile business apps to cater to customers and generate leads. What used to be an optional &#8220;nice to have&#8221; mobile component is now becoming an essential part of any business, regardless of industry. But, to build a great mobile presence for [...]]]></description> <content:encoded><![CDATA[<p></p><p>The ever-growing population of smartphone owners has led more and more companies to develop mobile business apps to cater to customers and generate leads. What used to be an optional &#8220;nice to have&#8221; mobile component is now becoming an essential part of any business, regardless of industry. But, to build a great mobile presence for your business, you need a lot more than just the realization that you need an app or the decision to build it. Many poorly-conceived small business mobile apps end up as nothing more than an expensive novelty.</p><p>If you don&#8217;t take time to develop a fully-functional, properly-planned app that offers real value to users, all of your efforts will go wasted. We&#8217;ve learned some important lessons through creating countless mobile apps for small businesses; here are the five essential elements that play pivotal roles in the building of successful business apps.</p><h3>A Professional Developer</h3><p>The first thing your mobile app needs is a professional developer. It&#8217;s tempting to view mobile development as a commodity—it&#8217;s not. Seeking the lowest price for your development (and ending up with the lowest quality) can result in major headaches, glaring software glitches, and brand damage. You should never try to cut corners and costs by hiring someone with little experience in mobile application development. Professional, seasoned developers know the ins and outs of mobile operating systems, version control, optimization, best practices, and the latest web technologies. With a veteran (or veterans) working on your project, you&#8217;ll be assured a mobile app that&#8217;s a strong benefit to your business instead of a frustrating hindrance.</p><h3>An Adequate Budget</h3><p>You can&#8217;t start the development process without an adequate development budget; having a half-built app and no funding to finish is arguably worse than having never started. You&#8217;d be amazed at just how complicated it can be for a developer to breathe life into what initially seemed like a simple design. The process often involves a designer, a project manager, and input from executives, marketers, and salesman. You have consider all of the moving parts of your design and how much it will cost to incorporate all of the multifaceted needs of each stakeholder. If your budget is not enough to cover these development costs, you might not be able to make your app as functional as you wanted it to be, and both customers and stakeholders could end up disappointed.</p><h3>Original Content That Will Keep Your Customers Coming Back</h3><p>You are not going to have thousands of customers lining up to download your app—even if it&#8217;s free—unless you have something truly valuable to offer. Many businesses expect a lot of exposure from their app without a real investment into the app&#8217;s content. Others make a substantial commitment of content upfront, but then consider the app a <em>completed</em> project instead of an <em>ongoing</em> project. Neither is a good long-term strategy for maintaining and leveraging a mobile app to benefit your business. You&#8217;ll want a steady stream of special offers, updates, or other reasons to revisit your business app.</p><p>A good litmus test of your app&#8217;s appeal is to simply play the role of the prospective user. Ask yourself why you&#8217;d notice the app, why you&#8217;d want or need it, and what would cause you to keep it on your mobile device&#8217;s small screen and limited storage. If you struggle with the answers, you may want to remedy the problem with original, valuable, regular content updates.</p><h3>Careful Branding to Grab Your User&#8217;s Attention</h3><p>You will need to find ways to grab your user&#8217;s attention the first time they load your business application. Clever loading screens and new user tutorials are a great way to do this, but you need to make sure you do not go overboard with your introduction efforts. Mobile users are inherently busy multitaskers; you never want to keep them from their purpose without good reason. You are <em>not</em> dealing with a captive audience; Users can leave your app or turn off their phone at a moment&#8217;s notice. You&#8217;ve already won the competition for their attention and gotten your app installed on their device; offer them some carefully-designed welcome messaging that&#8217;s just as easy to use as it is to bypass.</p><h3>Loading Indicators that Keep Your Users in the Loop</h3><p>There is nothing more frustrating than trying to navigate through an application just to be directed to a blank, unresponsive screen. One of the first thing your users will think if you do not have loading indicators is that the application is frozen or malfunctioning. Loading indicators and animations let your users know that the app is fully-functional, working, and waiting on your phone&#8217;s network or hardware to respond. A process indicator might be even more useful, because it tells the user how much of the process has been completed and the specific steps involved. This may sound like a small, inconsequential addition to an app, but in the minds of many users, it&#8217;s the difference between a buggy, crash-prone app and a snappy, responsive, user-friendly one.</p><h3>Conclusion</h3><p>&#8220;We need a mobile app&#8221; is just the beginning of your planning process. You need to take time to think about what you want your users to accomplish and how you design to suit their needs. Do not cut corners during your design, development, funding, or testing—your shortcuts will likely be noticed in a very public way. But, if you test your app thoroughly, design it thoughtfully, and keep the essentials in mind, it will be a valuable asset worthy of your time, investment, and brand.</p><p><em>Do you have any essentials to add to the list? Have you worked on mobile projects that lack thorough planning? Do you have any hard-earned development lessons to share?</em></p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/5-essential-elements-of-a-successful-business-app/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>What to Expect From jQuery Mobile 1.3.0</title><link>http://www.sitepoint.com/what-to-expect-from-jquery-mobile-1-3-0/</link> <comments>http://www.sitepoint.com/what-to-expect-from-jquery-mobile-1-3-0/#comments</comments> <pubDate>Fri, 25 Jan 2013 18:38:22 +0000</pubDate> <dc:creator>Aurelio De Rosa</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Development]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[jquery mobile]]></category> <category><![CDATA[Responsive Design]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5348</guid> <description><![CDATA[I wrote an article titled What&#8217;s New in jQuery Mobile 1.2.0? that showed the new features and the changes made by the jQuery Mobile team in version 1.2.0 of their popular mobile development framework. Several days ago, the team announced the beta version of the 1.3.0 release. Lucky for us, it focuses on responsive web [...]]]></description> <content:encoded><![CDATA[<p></p><p>I wrote an article titled <a
title="What’s New in jQuery Mobile 1.2.0?" href="http://buildmobile.com/whats-new-in-jquery-mobile-1-2-0/" target="_blank">What&#8217;s New in jQuery Mobile 1.2.0?</a> that showed the new features and the changes made by the jQuery Mobile team in version 1.2.0 of their popular mobile development framework. Several days ago, the team announced the beta version of the 1.3.0 release. Lucky for us, it focuses on responsive web design, specifically two different responsive table modes, panels, and dual-handle range sliders. In this article, I&#8217;ll show you an overview of some of these new features.<br
/> <span
id="more-65948"></span></p><h3>Tables</h3><p>In the 1.3.0 version of <a
title="Articles about jQuery Mobile" href="http://buildmobile.com/tag/jquery-mobile/" target="_blank">jQuery Mobile</a>, there are two important additions: reflow table and column toggle table mode. Let&#8217;s have a closer look at both.</p><h4>Reflow Table Mode</h4><p>Let&#8217;s suppose that you have a table with many columns, and that you&#8217;re looking to display that data sensibly on a small screen. With basic responsive design techniques, you&#8217;d reduce the font and cause the data table to be difficult due to the very small font size. With this mode, the table is instead divided into chunks where each row becomes a new table and the columns are turned into rows. So, the new small tables will have as many rows as the previous column count, and it will display just two columns: one for the data labels (which were the old column headers), and one for the values.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>To apply the reflow mode, all you need to do is to add the <code>data-role="table"</code> attribute to the <code>&lt;table&gt;</code> tag, since the <code>data-mode="reflow"</code> attribute is the default behavior. To see the reflow mode in action, take a look at <a
title="Reflow table mode example" href="http://jquerymobile.com/demos/1.3.0-beta.1/docs/tables/table-reflow.html" target="_blank">this example</a> on the jQuery Mobile website.</p><h4>Column Toggle Table Mode</h4><p>This mode has a different approach compared to reflow table mode. In fact, this time you have the chance to hide one or more columns based on your needs, thanks to a button injected at the top of the table. Of course, this is not the entire solution, because if all the columns are shown, you&#8217;ll have the same limited width problem discussed before. To solve this issue, you can program a set of columns to hide themselves if a certain width threshold is reached. This is accomplished by using CSS media queries that manage columns based on the priority level. You can specify the columns that can be hidden or shown applying a <code>data-priority</code> attribute, having values from 1 (highest) to 6 (lowest), to the table&#8217;s header (<code>&lt;th&gt;</code>). If you don&#8217;t specify a priority, the column is persistent so it&#8217;s not available for hiding. This means that it&#8217;ll be visible at all the widths and won&#8217;t be available in the column chooser menu. Apart from specifying the columns&#8217; priority attributes, you have to add the <code>data-role="table"</code> and the <code>data-mode="columntoggle"</code> attributes to the <code>&lt;table&gt;</code> tag.</p><p>To see the column toggle table mode in action, take a look at <a
title="column toggle table mode example" href="http://jquerymobile.com/demos/1.3.0-beta.1/docs/tables/table-column-toggle.html" target="_blank">this example</a> on the jQuery Mobile framework website.</p><h3>Panels</h3><p>If you&#8217;ve ever seen the Google+ app on Android, you may have noticed the nice panel that is shown once you click on the Google icon at the top-left of the screen. From this release onward, you can easily implement a panel like that for your website or application (using Cordova, as you might have learned in <a
title="Build a Location-Based Mobile App With HTML5 and Javascript" href="http://buildmobile.com/series/build-a-location-based-mobile-app-with-html5-and-javascript/" target="_blank">Build a Location-Based Mobile App With HTML5 and Javascript</a>). This new widget gives you a lot of options: you can position it on the left (the default) or the right of your page, and you also have up to three ways to show it. The default method is &#8220;reveal,&#8221; but you also have the &#8220;push&#8221; and the &#8220;overlay&#8221; animations at your disposal. The panel can be closed by swiping, tapping onto the page, or hitting the Esc key on the keyboard. To create a panel you simply add the <code>data-role="panel"</code> attribute to the container (usually a <code>&lt;div&gt;</code>) that you want to transform into a panel.</p><p>Typically, your code will look like the following:</p><pre class="brush: xml; title: ; notranslate">
&lt;div data-role=&quot;page&quot;&gt;
  &lt;header data-role=&quot;header&quot;&gt;
    &lt;h1&gt;Your title&lt;/h1&gt;
  &lt;/header&gt;
  &lt;div data-role=&quot;content&quot;&gt;
    &lt;p&gt;Open the panel: &lt;a href=&quot;#panel&quot;&gt;Panel&lt;/a&gt;&lt;/p&gt;
  &lt;/div&gt;
  &lt;footer data-role=&quot;footer&quot;&gt;
    &lt;h3&gt;Copyright Aurelio De Rosa&lt;/h3&gt;
  &lt;/footer&gt;
  &lt;div data-role=&quot;panel&quot; id=&quot;panel&quot;&gt;
      &lt;p&gt;The content of the panel&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
</pre><p>A demo of the panel widget can be seen looking at <a
title="Panel widget demo" href="http://jquerymobile.com/demos/1.3.0-beta.1/docs/panels/index.html" target="_blank">this page</a>.</p><h3>Range Slider</h3><p>The new range slider is a very nice feature in JQM version 1.3.0. It allows you to create a slider that has two handles that you can move to fit the range for a given property. It&#8217;s very useful. For example, if you have a reservations&#8217; website and you want to enable your users to select the price range to filter the results of a search, they can specify this exact range using the range slider. To have this widget, you just apply the <code>data-role="rangeslider"</code> attribute to the container, usually a <code>&lt;div&gt;</code>, consisting of two <code></code> elements.</p><p>An example of code that create a range slider is the following.</p><pre class="brush: xml; title: ; notranslate">
&lt;div data-role=&quot;rangeslider&quot;&gt;
  &lt;label for=&quot;range-1&quot;&gt;Slider 1:&lt;/label&gt;
  &lt;input type=&quot;range&quot; name=&quot;range-1&quot; id=&quot;range-1&quot; min=&quot;0&quot; max=&quot;10&quot; value=&quot;0&quot; /&gt;
  &lt;label for=&quot;range-2&quot;&gt;Slider 2:&lt;/label&gt;
  &lt;input type=&quot;range&quot; name=&quot;range-2&quot; id=&quot;range-2&quot; min=&quot;0&quot; max=&quot;10&quot; value=&quot;10&quot; /&gt;
&lt;/div&gt;
</pre><p>In case you want to see a live demo, look at <a
title="range slider demo" href="http://jquerymobile.com/demos/1.3.0-beta.1/docs/demos/sliders/rangeslider.html" target="_blank">this page</a>.</p><h3>Auto-Complete Listview</h3><p>The listviews have been enhanced with a shiny new feature: auto-complete. The basic version uses local data. To have the auto-complete function, you simply add the <code>data-filter-reveal="true"</code> attribute to your list. It will hide the list items when the search field is empty, and while the user writes, the matching elements are shown. However, the jQuery Mobile team warns against the use of this feature on large sets of data. Besides, if you want to use a remote source, you can use the <code>listviewbeforefilter</code> event to dynamically populate the listview as the user types.</p><p>To have an idea of how this feature works, <a
title="auto-complete listview demo" href="http://jquerymobile.com/demos/1.3.0-beta.1/docs/demos/listviews/listview-filter-reveal.html" target="_blank">watch the demo</a> illustrated in this page.</p><h3>Some Minor Changes</h3><h4>Dialog Close Button Option</h4><p>From now on, if the dialog has a header, jQuery Mobile will automatically add a &#8220;close&#8221; button at the left side of the header. If you want to place it in a more Windows-style position (on the right), you can add the <code>data-close-btn="right"</code> to the dialog container. In case you don&#8217;t want the close button at all, you can add the <code>data-close-btn="none"</code> attribute.</p><h4>Popup Dismissible Option</h4><p>Until the version 1.2.0, if you showed a popup, it could be hidden by clicking or tapping outside of the popup. If you didn&#8217;t like this behavior, you can now stop it by adding a <code>data-dismissible="false"</code> attribute to the popup container. It should be obvious that, in this case, you must provide an alternative method to dismiss the popup, or it&#8217;ll stay there and create major frustrations for your users.</p><h4>New Icons</h4><p>The jQuery Mobile team has added two new icons. They created an &#8220;edit&#8221; icon, represented by a pencil, that you can set by adding <code>data-icon="edit"</code>, and a &#8220;three bar&#8221; icon, that you can set by adding <code>data-icon="bars"</code>, which can be used with the new panel widget.</p><h4>Clear Button Option</h4><p>In this version of the framework, you can add the &#8220;clear&#8221; button (which is typically used for <code>&lt;input type="search"&gt;</code> elements) to any input type, even types like <code>text</code> and <code>number</code>. To achieve this goal, you have to add the <code>data-clear-btn="true"</code> attribute to the element. You can also change the display text of the &#8220;clear&#8221; button using the <code>data-clear-btn-text="my new text"</code> attribute.</p><h3>Conclusion</h3><p>I&#8217;ve shown some of the new features created by the jQuery Mobile team that you&#8217;ll see in the next release of the framework. Probably the most interesting new features are the panel widgets and the tables&#8217; responsive mode, which will let you create better mobile interfaces and user experiences. However, keep in mind that these are not the only enhancements made, and you can study them in depth by reading <a
title="Official article about the news of jQuery Mobile 1.3.0" href="http://jquerymobile.com/blog/2013/01/14/announcing-jquery-mobile-1-3-0-beta/" target="_blank">the release update</a> posted in the official website.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/what-to-expect-from-jquery-mobile-1-3-0/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Create a Mobile Application Mockup with Codiqa</title><link>http://www.sitepoint.com/create-a-mobile-mockup-with-codiqa/</link> <comments>http://www.sitepoint.com/create-a-mobile-mockup-with-codiqa/#comments</comments> <pubDate>Thu, 20 Dec 2012 21:13:52 +0000</pubDate> <dc:creator>Annarita Tranfici</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Mobile Web Tutorials]]></category> <category><![CDATA[development]]></category> <category><![CDATA[jquery mobile]]></category> <category><![CDATA[mockups]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5177</guid> <description><![CDATA[Before writing the actual code of web applications, every web designer or developer should create mockups or sketches of their work. On the web, there are several tools that you as a designer can use to envision and adjust your digital projects before you even start coding. Two of the most famous ones are Codiqa and Balsamiq. In [...]]]></description> <content:encoded><![CDATA[<p></p><p>Before writing the actual code of web applications, every web designer or developer should create mockups or sketches of their work. On the web, there are several tools that you as a designer can use to envision and adjust your digital projects before you even start coding. Two of the most famous ones are <a
title="Codiqa Official Website" href="http://www.codiqa.com/" target="_blank">Codiqa</a> and <a
title="Balsamiq Official Website" href="http://www.balsamiq.com/" target="_blank">Balsamiq</a>. In this article, I’ll outline the features of Codiqa and I&#8217;ll explain you how to take advantage of its potential for saving time and developing better applications.</p><h3>Planning a Project</h3><p>When you start planning a new website or mobile application, the ideal first step is to define a detailed initial plan of work. Before starting to write the code, even a hand-drawn sketch of your plans could save you from making many future mistakes, and it could also lend additional clarity and depth to your ideas. It doesn’t matter if you’re planning a personal project or if you’re working on a professional basis. Although the content has obvious importance, the success of the project requires a solid development process in which you maintain a clear idea of the goals that you want to fulfill.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>If your goal is to satisfy customer needs, you&#8217;ll have to analyze their anticipated requirements and draw up a design specification that contains sketches of the layouts, definition of the audience, and technical requirements. You’ll use this specification as guide in the next stages of the project. Each layout of a web app interface starts with a mockup, which is usually nothing more than a simple sketch of the desired outcome. This can be easily modified according to the feedback of the customer and the contributions of the design team, if you have one.</p><p>When the design becomes more stable, the mockup can evolve into a refined state and it often is named a &#8220;wireframe.&#8221; A wireframe shows a more complete version of a page layout, with the inclusion of navigation elements, search features, advertisement spaces, and other features. But, before starting a discussion about what a wireframe is and what it isn&#8217;t, let’s have a look at how to build a simple, clear mockup for your next app.</p><h3>What’s Codiqa?</h3><p>Codiqa is a simple interface-building tool for jQuery Mobile. It&#8217;s incredibly intuitive to use, and it&#8217;s composed of 100% HTML5 components. After prototyping your idea, you’ll obtain perfect usable code. In fact, there is no need to code again later. The strength of this application lies in its drag-and-drop interface, which allows for easy and fast mobile prototype building. You can access your project anywhere from the cloud, and moreover, the share function lets you share it with team members or other developers for live testing and feedback. The only “flaw” Codiqa has is that it is not a completely free tool. In fact, after a 30 days trial, if you want to continue using this tool, you&#8217;ll have to subscribe a plan. There are four plans from which you can choose: Personal, Starter, Pro, and Team, all of which are are described in detail on the Codiqa website.</p><h3>How Codiqa Works</h3><p>Now that you know more about Codiqa, it&#8217;s time to delve deep with its features. Please note that the 30 days free trial version restricts you to opening and working on only one project, and you can&#8217;t share your work with other users.</p><p>The first task is to define the size of the device for which you want to create a mockup. You can choose between iPhone (3,4,4S,5) , iPad (1/2/3), tablets 600 x 1024 pixel dimensions, and phones that range from 240 x 320 pixels to 800 x 1280. As a next step, let’s work on the style of the main page, called “Home” by default (you can change the title as you prefer). You can choose a theme between the five available, upload a background-image (also selecting the repetition on X and Y axes), and program your content padding in pixels or percentages.</p><p><a
href="http://buildmobile.com/create-a-mobile-mockup-with-codiqa/codiqa1/" rel="attachment wp-att-5215"><img
class="aligncenter size-full wp-image-5215" title="codiqa1" src="http://buildmobile.com/files/2012/12/codiqa1.png" alt="" width="600" height="281" /></a></p><p>Let’s see what else we can add to our new homepage. If you click on the element called “Components” next to “Pages” on the left side of the page, you’ll find that you can add numerous elements, many of which are common and quite useful. At this point, let’s think about the elements that we might want to add: a header, a footer, a menu-list, a text box for some content, a little image, and some links. With Codiqa&#8217;s simple, intuitive drag-and-drop system, you can easily add everything you desire with a few clicks. After adding the elements we wanted, our mockup now looks something like this:</p><p><a
href="http://buildmobile.com/create-a-mobile-mockup-with-codiqa/codiqa2/" rel="attachment wp-att-5216"><img
class="aligncenter size-full wp-image-5216" title="codiqa2" src="http://buildmobile.com/files/2012/12/codiqa2.png" alt="" width="600" height="274" /></a></p><p>Now we start to customize all the components one by one using the menu on the right of the device screen. The header and footer can be chosen among the five available, and you can decide if you want these elements to be fixed or not. Clicking in the space where the titles are, you can easily change its text and size.</p><p>In the “Select Menu” box, which appears when you click on the corresponding space, you can set the name, the title you want to be shown, the theme, the size (choosing between the &#8220;normal&#8221; and &#8220;mini&#8221; options), and the items that will be offered within your menu. To add a new item on the menu, you have simply to click on &#8220;New Option,&#8221; the green button at the bottom of the box. You’ll find a typical text editor where you’ll be able to specify the characteristics and content of the paragraph.</p><p>Regarding images we&#8217;ve added an example image below the content box. Its size can be specified in pixels or percentages. Finally, in the link menu, you can build hyperlinks and specify all of the usual attributes for linking. For functionality, you can choose between fade, pop, flip, turn, flow, slide fade, slide, slide up, and slide down. Remember that at any time you can rotate your device to verify that your design choices work well in landscape mode.</p><p>At this point, let’s create another page to learn a little more about other components that are at our disposal. Below, I’ve created a page called “Contact us” where in addition to the element header, menu, and footer, I’ve added a heading, a search input, a form, and a submit button. Look below for clarity.</p><p><a
href="http://buildmobile.com/create-a-mobile-mockup-with-codiqa/codiqa3/" rel="attachment wp-att-5217"><img
class="aligncenter size-full wp-image-5217" title="codiqa3" src="http://buildmobile.com/files/2012/12/codiqa3.png" alt="" width="600" height="274" /></a></p><p>For this contact form, you’ll have to indicate a URL, choose between a &#8220;GET&#8221; or a &#8220;POST&#8221; method, and decide if the submission will be done with AJAX or not. The submission button can be modified by size, title, inline disposition, and in this case you can also choose an icon. There are other few elements that don&#8217;t fit perfectly into my mockup example, but they are certainly worthy of mention:</p><ul><li><strong>Map</strong>: like the images, its width and height can be specified in pixels. You can also determine the zoom level;</li><li><strong>List View</strong>: you can create a list defining both the theme of the divider and the items, the link transition, the path of the links, and the titles of the buttons;</li><li><strong>Radio Button</strong>: a radio button is an element that allows the user to choose only one of a predefined set of mutually exclusive options;</li><li><strong>Toggle Switch</strong>: it displays checked/unchecked states as a button with a &#8220;light&#8221; indicator and by default accompanied with the text &#8220;On&#8221; or &#8220;Off&#8221;. You can choose theme, name, size, and eventually the text you want to be displayed instead of “On” and “Off”.</li></ul><h3>Conclusion</h3><p>This article shows how simple and intuitive is to create a mockup for a website or web application using the tools provided by Codiqa. This kind of careful upfront planning can save you countless development hours down the road, and it&#8217;s especially helpful to show a visual, interactive mockup of your idea to your partners in a collaborative environment.</p><p><em>Are you disciplined about creating mockups of your applications, or do you get right into coding without wasting any time? Do you find mockups to be useful in collaborative settings? Do they help you envision the details of your project?</em></p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/create-a-mobile-mockup-with-codiqa/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>10 Years of Mobile Industry History in 10 Minutes</title><link>http://www.sitepoint.com/the-advancements-in-mobile-design-and-how-it-has-developed-into-a-strong-industry/</link> <comments>http://www.sitepoint.com/the-advancements-in-mobile-design-and-how-it-has-developed-into-a-strong-industry/#comments</comments> <pubDate>Fri, 30 Nov 2012 18:03:40 +0000</pubDate> <dc:creator>Dirk Reagle</dc:creator> <category><![CDATA[Android Discussion]]></category> <category><![CDATA[iOS Discussion]]></category> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Windows Phone Discussion]]></category> <category><![CDATA[Business]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5123</guid> <description><![CDATA[Any investor will tell you that past performance is not a guarantee of future results, but as investors of time, money, and energy in mobile enterprises, it&#8217;s important to maintain a bird&#8217;s-eye, macro-level view of the industry. The market for mobile software and devices has been steadily growing at a nearly geometric pace, and it [...]]]></description> <content:encoded><![CDATA[<p></p><p>Any investor will tell you that past performance is not a guarantee of future results, but as investors of time, money, and energy in mobile enterprises, it&#8217;s important to maintain a bird&#8217;s-eye, macro-level view of the industry. The market for mobile software and devices has been steadily growing at a nearly geometric pace, and it shows no signs of slowing.</p><p>Since the mid 2000&#8242;s, the industry—especially in terms of software, apps, and web interactivity—design has absolutely boomed and gone through immense advancements in every way imaginable way. This is because during the last decade (and even more so during the last five years), mobile phones have gone from being simple phones to being fully-functional pocket-sized computers, with a mobile equivalent for almost every single feature of a full-blown desktop or laptop computer.</p><p>This general trend has naturally led to the development of an enormous industry that can basically be divided into two interrelated parts: mobile app development and mobile-friendly design. Mobile development has grown alongside thousands and eventually millions of increasingly-sophisticated mobile applications developed for ever-growing smartphone marketplaces. Modern mobile applications take advantage of built-in hardware abilities in astoundingly clever ways and perform robust web-based and organizational functions.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>With the rising advancement of high-speed, large-bandwidth mobile networks like 3G, WiFi, and 4G, consumers can access the web on their smartphones as quickly and reliably as they can via a normal computer. At the same time, the growing access has prompted an explosion in the number of mobile-friendly or purely mobile websites; this in turn has increased demand for mobile design enormously, and that&#8217;s where developers like you come in.</p><p>Today, the mobile phone market is outstripping ownership and use of landline phones in virtually every country on Earth, the steady conversion of more and more of these phones into smarter, more multimedia-friendly devices that work off WiFi, 3G, or 4G networks suggests that the future of mobile development and design will only grow stronger.</p><p>Let&#8217;s go over some of the major ingredients that led to the rise of modern mobile design.</p><h3>The First Cellular Networks</h3><p>Starting from simple wireless analog-based (1G) portable phones, it wasn&#8217;t until the late 1990&#8242;s that cell phones turned into more sophisticated devices as the technology inside them started to spawn an ever larger number of features (features that nonetheless seem basic by today&#8217;s standards). These first phones gave basic calling abilities to users and their convenient portable capacities are what established them as widely-used communications devices.</p><h3>2G/GSM Networks and the Rise of Mobile Media</h3><p>It wasn&#8217;t until the mid to late 1990&#8242;s that a new communications network, known as GSM—or 2G, as it was less often called—began to develop in which more mobile services could be offered. At this point, the first pre-smartphone devices began to appear, and the fact that data transmission over these next-generation devices was digital instead of analog allowed them to carry many of the more basic smartphone features that we use as the basis for modern app development. Capabilities such as text messaging, downloadable content, and extremely basic web access gave consumers the ability to send emails, view a small selection of online multimedia, and download simple digital applications such as ringtones and music files.</p><p>The growth of the GSM, or 2G networks, is what really expanded mobile phone use so broadly that mobile devices eventually eclipsed landline communication tools. Despite the 2G networks explosive popularity amongst users of all income levels worldwide, these machines were still pretty basic compared to today&#8217;s mobile devices.</p><h3>3G Arrives</h3><p>It wasn&#8217;t until the early 2000&#8242;s, with the development and service offering of the first 3G wireless digital networks that true smartphones arrived. In 2002 and 2003, network operators began to offer widespread 3G access based on more powerful wireless transmission technology that depended on efficient packet switching data transmission found in computer-based web connections instead of the 2G networks circuit switching mechanism.</p><p>With the arrival and rise of 3G, the modern era of wireless mobile smartphones as pocket-sized computers truly began, especially after 2005, when <a
href="http://en.wikipedia.org/wiki/High-Speed_Downlink_Packet_Access" target="_blank">High-Speed Downlink Packet Access (HSDPA)</a> was implemented into 3G and expanded its data carrying ability even more. The resulting explosion in online media accessibility created a tandem explosion in online media creation. At the same time, in order to take full advantage of all these web-based data options that phone networks now offered, mobile applications started appearing for smart phones—at first in small quantities but later at a rapid development pace. Also, the devices themselves had to be redesigned so that they could better display digital media and other interactive systems, taking full advantage of the growing apps market.</p><h3>4G Replacing 3G</h3><p>Currently, even 3G itself is being slowly replaced by the much more powerful, purely packet-switching-based, data optimized 4G network. With this new technology, ten-fold increases over 3G in data transmission ability are coming into the picture, making access to digital media even more robust and further bolstering the demand for media-rich mobile applications.</p><h3>Bye Bye Buttons</h3><p>This is where the touchscreen phone with its large visual screen interface comes into the picture. Today, this is the replacement to the antiquated button control and small display screen based phones of several years ago.</p><p>The end result of this mix is the rapid replacement of old phones for new touchscreen devices and the deliberate obsolescence of older networks in favor of 3G and its even more powerful successor, 4G. In many countries, anything older than 3G is no longer even available and almost all new phones being sold feature a predominantly buttonless touchscreen design.</p><p>As of the most recent figures, there were over 1.6 billion 3G/4G mobile subscribers worldwide (up from only 297 million in 2007)</p><h3>Mobile Operating Systems and App Marketplaces</h3><p>Finally, we come to the growth of mobile device operating systems. Since modern smartphones are more like computers than cell phones in a classical sense, they naturally needed a fully-functional OS of their own. Because of this, several companies such as Research in Motion, Apple, Google, and Microsoft all came out with their own competing mobile operating systems that gave a full-scale interface to digital media access and software applications compatibility</p><p>Thanks to all these features, the mobile apps development landscape has exploded like few other industries ever have in history. Since 2010-2011, app marketplaces have grown for mobile operating system developers such as Apple with its iOS platform, Google&#8217;s Android OS, and Microsoft&#8217;s Windows Phone.</p><p>As of 2012, the Apple mobile apps market alone houses over 600,000 smartphone apps and has had over 30 billion downloads to date. Similarly, the Android OS market gives access to hundreds of thousands of additional applications and sees some 3 million downloads per day from its online platform.</p><p>These applications are developed by both major mobile market players and, even more overwhelmingly, hundreds of smaller third-party companies and teams that sell them through the major apps markets for a majority percentage of revenues per app. This mutually-beneficial sales relationship ensures an extremely robust mobile app market that constantly sees new innovation flooding in.</p><h3>Mobile Website Design</h3><p>Finally, the last major branch of the mobile development landscape—with the enormous growth similar to that of mobile device development—is mobile website design. The ever-faster Internet connectivity of modern devices virtually guaranteed their use for web browsing. As of early 2012, some 61% of American users were regularly accessing the internet through their smartphones or tablets, and of those, at least 30 to 40% are almost exclusively mobile Internet users who rarely if ever bother browsing from a desktop or laptop.</p><p>Naturally, this creates an immense demand for web design that&#8217;s compatible with the much smaller and simpler screens of mobile phones and tablet devices, and this search for mobile web compatibility in online domain pages has been the latest trend in web design.</p><p>Thanks to this trend, most major site owners today have <a
href="http://designfestival.com/forget-mobile-sites-time-for-a-responsive-web/" target="_blank">both a regular site for their URLs and a mobile-friendly version</a> that is either automatically accessible as a special domain with its own mobile designated prefix or as a downloadable app that functions as a website. In general, these mobile versions of pages are visually stripped down versions of the full-scale original website that maintain core functionality.</p><p><em>Do you remember the &#8220;old days&#8221; of flip phones and low bandwidth? Did you develop or utilize primitive phone apps from years ago?</em> What do you predict will be next for the mobile industry?</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/the-advancements-in-mobile-design-and-how-it-has-developed-into-a-strong-industry/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Build Lists and Popups in Minutes Using jQuery Mobile</title><link>http://www.sitepoint.com/working-with-jquery-mobile-1-2-0/</link> <comments>http://www.sitepoint.com/working-with-jquery-mobile-1-2-0/#comments</comments> <pubDate>Tue, 27 Nov 2012 21:05:35 +0000</pubDate> <dc:creator>Aurelio De Rosa</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Development]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Mobile Web Tutorials]]></category> <category><![CDATA[jquery mobile]]></category> <category><![CDATA[mobile]]></category> <category><![CDATA[Tutorials]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5091</guid> <description><![CDATA[In my last article, I explained what&#8217;s new in jQuery Mobile 1.2.0, the latest release of the popular mobile development framework. The article describes the new devices compatibility, the popup widget, the collapsible lists, and several deprecated methods. Today, I&#8217;ll show you a complete and functional example which will be powered by the new features [...]]]></description> <content:encoded><![CDATA[<p></p><p>In <a
title="What’s New in jQuery Mobile 1.2.0?" href="http://buildmobile.com/whats-new-in-jquery-mobile-1-2-0/" target="_blank">my last article</a>, I explained what&#8217;s <a
title="What’s New in jQuery Mobile 1.2.0?" href="http://buildmobile.com/whats-new-in-jquery-mobile-1-2-0/" target="_blank">new in jQuery Mobile 1.2.0</a>, the latest release of the popular mobile development framework. The article describes the new devices compatibility, the popup widget, the collapsible lists, and several deprecated methods. Today, I&#8217;ll show you a complete and functional example which will be powered by the new features and widgets found within jQuery Mobile&#8217;s latest evolution.<br
/> <span
id="more-65928"></span></p><h3>Working With jQuery Mobile&#8217;s New Tools</h3><p>The first feature discussed was the <strong>expanded device compatibility</strong>. Unfortunately, all that I can do to show off jQuery Mobile&#8217;s increased compatibility coverage is suggest that you to try the following example on one of those newly-supported devices (like those powered by Tizen) and see how jQuery Mobile 1.2.0 enhances the page. The next section referred the new <strong>popup widget,</strong> and how you can create a basic popup of your own. jQuery Mobile allows you to put any content that you want inside a container that floats above the current page. The popup widget has three events that are possible to catch and manage:<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><ol><li><code>popupbeforeposition</code>: It&#8217;s fired after the popup completed preparations for opening but before is actually opened</li><li><code>popupafteropen</code>: fired after the popup is completely opened</li><li><code>popupafterclose</code>: fired after the popup is completely closed</li></ol><p>The final code will have two links that open a popup. The first link, having the ID <code>helloPopup</code>, shows a basic popup that has simple text, while the second doesn&#8217;t call the popup directly. The former will show an alert when each of those are triggered to better understand their execution order and the time when they&#8217;re fired. This will be done using the following code.</p><pre>$("#helloPopup").on(
   "popupbeforeposition popupafteropen popupafterclose",
   function(event) {
      alert(event.type);
   }
);</pre><p>The latter will programmatically open the popup which contains an image centered on the current window, as you can see below.</p><pre>$("#imagePopupLink").click(function() {
   $("#imagePopup").popup("open", {positionTo: "window"});
});</pre><h3>jQuery Mobile List Management</h3><p>The next set of improvements implemented by the jQuery team were about the lists. The first two were <strong>Listview Autodividers</strong> and <strong>Collapsible Lists</strong>, which will be merged in the example page created below. Autodividers enhance the list readability by adding alphabetical list dividers, while collapsible lists are designed to make the most of the limited screen space on mobile devices. The relevant code is shown below.</p><pre>&lt;div data-role="collapsible"&gt;
  &lt;h3&gt;Collapsible List with Listview Autodividers&lt;/h3&gt;
  &lt;p&gt;
    The following list is inside a collapsible element and it
    uses also the new &lt;code&gt;data-autodividers&lt;/code&gt; attribute.
  &lt;/p&gt;
  &lt;ul data-role="listview" data-autodividers="true" data-inset="true"&gt;
    &lt;li&gt;&lt;a href="http://www.buildmobile.com/author/aderosa/"&gt;Aurelio De Rosa&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.buildmobile.com"&gt;BuildMobile.com&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.jspro.com"&gt;JSPro.com&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.phpmaster.com"&gt;PHPMaster.com&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.sitepoint.com"&gt;SitePoint.com&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;</pre><p>The third major enhancement to jQuery Mobile 1.2.0 was the introduction of <strong>Read-only Lists</strong>. This addition is more of an aesthetic change than a functional one, so you&#8217;ve got to see the code in action to understand the difference.</p><p>And finally, the new version of jQuery Mobile brought about <strong>page loading deprecated methods and properties</strong>. In the following code, I&#8217;ve included a function that catches the <code>mobileinit</code> event to set the global configuration of the loading widget using the new <code>$.mobile.loader.prototype</code> properties.</p><pre>$(document).on("mobileinit", function() {
   $.mobile.loader.prototype.options.text = "Please wait...";
   $.mobile.loader.prototype.options.textVisible = true;
   $.mobile.loader.prototype.options.theme = "e";
});</pre><p>In addition, I&#8217;ll attach a function to the <code>pageshow</code> event that will show the widget and then hide it after 1.5 seconds using the new <code>$.mobile.loading()</code> method.</p><pre>$(document).on("pageshow", function() {
   $.mobile.loading("show");
   setTimeout(function() { $.mobile.loading("hide"); }, 1500);
});</pre><p>Lastly, I&#8217;ll create a button that, once clicked, shows the same loading widget, but this time it&#8217;ll use a local configuration. A local configuration allows you to overwrite the global configuration when you call this method to create a specific style. Just like the previous loading widget, after 1.5 seconds it will be hidden.</p><pre>$("#loadingLink").click(function() {
   $.mobile.loading("show", {
      theme: "b",
      text: "Different message...",
      textVisible: true
   });
   setTimeout(function() { $.mobile.loading("hide"); }, 1500);
});</pre><h3>Putting it All Together</h3><p>As promised, below is a jQuery code sample that encompasses all of the aforementioned new techniques afforded by the 1.2.0 version. The following example will make use of and expand the above snippets to show you the discussed features.</p><pre>&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Working with jQuery Mobile 1.2.0&lt;/title&gt;
    &lt;link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" /&gt;
    &lt;script src="http://code.jquery.com/jquery-1.8.2.min.js"&gt;&lt;/script&gt;
    &lt;script&gt;
      $(document).on("mobileinit", function() {
        $.mobile.loader.prototype.options.text = "Please wait...";
        $.mobile.loader.prototype.options.textVisible = true;
        $.mobile.loader.prototype.options.theme = "e";
      });
    &lt;/script&gt;
    &lt;script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"&gt;&lt;/script&gt;
    &lt;script&gt;
      $(document).on("pageinit", function() {
        $("#helloPopup").on("popupbeforeposition popupafteropen popupafterclose", function(event) {
          alert(event.type);
        });
        $("#imagePopupLink").click(function() {
          $("#imagePopup").popup("open", {positionTo: "window"});
        });
        $("#loadingLink").click(function() {
          $.mobile.loading("show", {
            theme: "b",
            text: "Different message...",
            textVisible: true
          });
          setTimeout(function() { $.mobile.loading("hide"); }, 1500);
        });
      });
      $(document).on("pageshow", function() {
        $.mobile.loading("show");
        setTimeout(function() { $.mobile.loading("hide"); }, 1500);
      });
    &lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div data-role="page" id="examplePage"&gt;
      &lt;header data-role="header"&gt;
        &lt;h1&gt;What's new JQM 1.2.0&lt;/h1&gt;
      &lt;/header&gt;
      &lt;div data-role="content" role="main"&gt;
        &lt;p&gt;
          This page will show you some of the new features, widgets and
          method of &lt;b&gt;jQuery Mobile 1.2.0&lt;/b&gt; explained in the article
          "&lt;a href="http://buildmobile.com/whats-new-in-jquery-mobile-1-2-0/"
             title="What's New in jQuery Mobile 1.2.0?"
             target="_blank"&gt;What's New in jQuery Mobile 1.2.0?&lt;/a&gt;".
        &lt;/p&gt;
        &lt;div data-role="collapsible-set"&gt;
          &lt;div data-role="collapsible"&gt;
            &lt;h3&gt;Popups&lt;/h3&gt;
            &lt;a href="#helloPopup" data-role="button" data-rel="popup"&gt;Basic Popup&lt;/a&gt;
            &lt;a href="#" data-role="button" data-rel="popup" id="imagePopupLink"&gt;Image Popup&lt;/a&gt;
          &lt;/div&gt;
          &lt;div data-role="collapsible"&gt;
            &lt;h3&gt;Collapsible List with Listview Autodividers&lt;/h3&gt;
            &lt;p&gt;
              The following list is inside a collapsible element and it
              uses also the new &lt;code&gt;data-autodividers&lt;/code&gt; attribute.
            &lt;/p&gt;
            &lt;ul data-role="listview" data-autodividers="true" data-inset="true"&gt;
              &lt;li&gt;&lt;a href="http://www.buildmobile.com/author/aderosa/"&gt;Aurelio De Rosa&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;&lt;a href="http://www.buildmobile.com"&gt;BuildMobile.com&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;&lt;a href="http://www.jspro.com"&gt;JSPro.com&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;&lt;a href="http://www.phpmaster.com"&gt;PHPMaster.com&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;&lt;a href="http://www.sitepoint.com"&gt;SitePoint.com&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/div&gt;
          &lt;div data-role="collapsible"&gt;
            &lt;h3&gt;Read-only Lists&lt;/h3&gt;
            &lt;h4&gt;Articles published&lt;/h4&gt;
            &lt;ul data-role="listview" data-inset="true"&gt;
              &lt;li&gt;Aurelio De Rosa&lt;span class="ui-li-count"&gt;3&lt;/span&gt;&lt;/li&gt;
              &lt;li&gt;John Doe&lt;span class="ui-li-count"&gt;2&lt;/span&gt;&lt;/li&gt;
              &lt;li&gt;Jason Parker&lt;span class="ui-li-count"&gt;5&lt;/span&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/div&gt;
          &lt;div data-role="collapsible"&gt;
            &lt;h3&gt;Loading&lt;/h3&gt;
            &lt;a href="#" data-role="button" id="loadingLink"&gt;Keep loading...&lt;/a&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div data-role="popup" id="helloPopup"&gt;
        &lt;header data-role="header"&gt;
          &lt;h1&gt;Popup&lt;/h1&gt;
        &lt;/header&gt;
        &lt;div data-role="content"&gt;
          &lt;p&gt;Hello! I'm a brand new popup widget.&lt;/p&gt;
          &lt;a href="#" title="Go back" data-role="button" data-rel="back"&gt;Close&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div data-role="popup" id="imagePopup"&gt;
        &lt;a href="#" data-rel="back" data-role="button" data-icon="delete"
          data-iconpos="notext" class="ui-btn-right"&gt;Close&lt;/a&gt;
        &lt;div data-role="content"&gt;
          &lt;img src="http://cdn.buildmobile.com/wp-content/themes/buildmobile-v1/images/logo.png" alt="BuildMobile logo" /&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;footer data-role="footer"&gt;
        &lt;h3&gt;Aurelio De Rosa&lt;/h3&gt;
      &lt;/footer&gt;
    &lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre><h3>Conclusion</h3><p>Now, you should be able to master the recent changes implemented by the jQuery team in the new release of jQuery Mobile. These can serve your mobile apps and websites well, and hopefully propel your next mobile project to new heights.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/working-with-jquery-mobile-1-2-0/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>What&#8217;s New in jQuery Mobile 1.2.0?</title><link>http://www.sitepoint.com/whats-new-in-jquery-mobile-1-2-0/</link> <comments>http://www.sitepoint.com/whats-new-in-jquery-mobile-1-2-0/#comments</comments> <pubDate>Mon, 12 Nov 2012 22:50:38 +0000</pubDate> <dc:creator>Aurelio De Rosa</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Development]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Mobile Web Tutorials]]></category> <category><![CDATA[jquery mobile]]></category> <category><![CDATA[mobile]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5067</guid> <description><![CDATA[A highly anticipated new version of jQuery Mobile was recently released. Let&#8217;s have a look at what&#8217;s been added and changed in this 1.2.0 version. Throughout the code samples, you&#8217;ll learn also how to handle these new features and harness them to improve your mobile apps. jQuery Mobile is a lightweight, useful, and easy-to-learn mobile [...]]]></description> <content:encoded><![CDATA[<p></p><p>A highly anticipated new version of jQuery Mobile was recently released. Let&#8217;s have a look at what&#8217;s been added and changed in this 1.2.0 version. Throughout the code samples, you&#8217;ll learn also how to handle these new features and harness them to improve your mobile apps.<br
/> <span
id="more-65926"></span><br
/> jQuery Mobile is a lightweight, useful, and easy-to-learn mobile framework defined by <q>a unified user interface system that works across all popular mobile device platforms.</q> I must admit that as soon as I started to study and use it, I fell in love. I&#8217;ll focus on the new features of the latest version, but in case you don&#8217;t know what jQuery Mobile is or if you need a starting point, I advise you to read <a
title="Hello jQuery Mobile" href="http://buildmobile.com/hello-jquery-mobile/" target="_blank">Hello jQuery Mobile</a> and <a
title="Building a Staff Directory on jQuery Mobile" href="http://buildmobile.com/building-a-staff-directory-on-jquery-mobile/" target="_blank">Building a Staff Directory on jQuery Mobile</a>.</p><p>Keep in mind that the newest version also solves a lot of bugs from the previous one. If you need a complete list of the changes, refer to the <a
title="jQuery mobile official changelog" href="http://jquerymobile.com/blog/2012/10/02/announcing-jquery-mobile-1-2-0-final/#changelog" target="_blank">official change log for 1.2.0</a>. Please note that I&#8217;ll use the term &#8220;virtual page&#8221; to emphasize the difference between a jQuery Mobile page and a physical page — a file like index.html or page.php.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><h3>Compatibilities</h3><p>The first thing to highlight is that jQuery Mobile 1.2.0 increased device compatibility. Actually, most of these operating systems or browsers already worked with the version 1.1, but jQuery Mobile now has an unrivaled &#8220;&#8216;A&#8217; grade&#8221; compatibility. &#8220;A&#8221; grade means <q
cite="http://jquerymobile.com/gbs/">full, enhanced experience with Ajax-based animated page transitions.</q> If you need more information about what those grades are, you can read <a
title="Mobile Graded Browser Support" href="http://jquerymobile.com/gbs/" target="_blank">Mobile Graded Browser Support</a>.<br
/> The complete list of fully compatible mobile operating systems includes: iOS 6, Android 4.1, Tizen, Firefox for Android, and Kindle Fire HD. Now, you&#8217;re probably puzzled by <a
href="https://www.tizen.org/">Tizen</a>. It&#8217;s an open-source operating system created by the Linux Foundation. To be more accurate, I&#8217;ll to cite their &#8220;About&#8221; page:</p><blockquote
cite="https://www.tizen.org/about"><p>Tizen is an open source, standards-based software platform supported by leading mobile operators, device manufacturers, and silicon suppliers for multiple device categories, including smartphones, tablets, netbooks, in-vehicle infotainment devices, smart TVs, and more. Tizen offers an innovative operating system, applications, and a user experience that consumers can take from device to device.</p></blockquote><p>As you may know, jQuery Mobile relies on the jQuery library. The new version of jQuery Mobile added the support for the latest jQuery version, the 1.8 branch and — on the other end of software modernization — the jQuery team dropped the support for the 1.6 branch. However, if you still use that old version, your code should work as before, but be aware that if bugs are found that affect just this older 1.6 version, they won&#8217;t be fixed.</p><h3>Popups</h3><p>Popups are one of the new features introduced in the latest version of jQuery Mobile. They allow you to put any content like menus, widgets, or images inside a container that floats above the current page. It&#8217;s very easy to create one. In fact, all you have to do is to follow the structure of a classic jQuery Mobile virtual page and replace the <code>data-role="page"</code> with <code>data-role="popup"</code>. To call a popup widget, just like a dialog, you have to place a link pointing to the ID of the popup and add <code>data-rel="popup"</code>. The following is an example of how to call a popup.</p><pre>&lt;a href="#helloPopup" data-rel="popup"&gt;Basic Popup&lt;/a&gt;</pre><p>And this is how it resembles a basic popup.</p><pre>&lt;div data-role="popup" id="helloPopup"&gt;
  &lt;header data-role="header"&gt;
    &lt;h1&gt;Popup&lt;/h1&gt;
  &lt;/header&gt;
  &lt;div data-role="content"&gt;
    &lt;p&gt;Hello! I'm a brand new popup widget.&lt;/p&gt;
    &lt;a href="#" title="Go back" data-role="button" data-rel="back"&gt;Close&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre><p>Like almost every other feature, the popup widget has a lot of useful options like <code>theme</code> to set the color scheme for the popup contents, <code>corners</code> to determine if the popup has rounded corners, and probably the most interesting, <code>positionTo,</code> which allows you to determine where to render the popup. The possible values are:</p><ul><li><code>origin</code>, the default, which means centered based on the element that called the popup; <code></code></li><li><code>window</code>, centered in the current window;</li><li>a jQuery selector, centered among the given element.</li></ul><p>One of the main differences between popups and dialogs is that while a dialog must be an external page and a physical file, a popup is placed in the same file and within the same virtual page that will call it.</p><p>I must admit that this dialog constraint made me waste a lot of time when I started with jQuery Mobile. In fact, at that time I wasn&#8217;t using the popup widget, and I felt that having a physical file was a waste of disk space. Citing the documentation:</p><blockquote
cite="http://jquerymobile.com/demos/1.2.0/docs/pages/dialog/index.html"><p>Any page can be presented as a modal dialog by adding the data-rel=&#8221;dialog&#8221; attribute to the page anchor link.</p></blockquote><p>Although the documentation examples always show a link to a physical file, they don&#8217;t specify that it <strong>must</strong> be a physical file. However, thanks to the new popup widget, you&#8217;ll never have to build additional external files or run in this issue again.</p><h3>Lists</h3><p>In this new jQuery Mobile version, lists are rendered, altered, and manipulated much more easily. Let&#8217;s take a closer look.</p><h4>Listview Autodividers</h4><p>The jQuery Mobile team has introduced a new list attribute that will absolutely thrill you. The attribute is <code>data-autodividers</code>, and it greatly improves the readability of your lists by adding alphabetical list dividers. The great news is that this attribute can work together with the <code>data-filter</code> to further improve your apps. So, if you employ both techniques on your list and a user types a string into the input box to filter data, the dividers will change accordingly. Of course, they still remain independent from each other. To start using this new attribute, your list view should resemble to the following.</p><pre>&lt;ul data-role="listview" data-autodividers="true" data-filter="true"&gt;
  &lt;li&gt;&lt;a href="#"&gt;Audero.it&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#"&gt;Aurelio De Rosa&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#"&gt;BuildMobile.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre><p>To see in action a full example, please refer to the <a
title="Autodividers demo page" href="http://jquerymobile.com/demos/1.2.0/docs/lists/lists-autodividers.html" target="_blank">its demo page</a> on the jQuery Mobile website.</p><h4>Collapsible Lists</h4><p>From this release onward, you&#8217;ll have collapsible lists at your disposal. Lists within lists are displayed when the parent list is tapped. Being lists, you can use all of the attributes that you already know such as <code>data-inset</code>, <code>data-filter</code>, and the previous-explained <code>data-autodividers</code>. You&#8217;ll now be able to show a single collapsible element or create an accordion. In case you aren&#8217;t familiar with accordions, they are sets of collapsible elements that you can create by wrapping several collapsed elements with a tag having attribute <code>data-role="collapsible-set"</code>.</p><h4>Read-only Lists</h4><p>In jQuery Mobile, lists are very easy to read due to the readability enhancement made by the framework. Although they&#8217;re mainly used to list links, lists are also used to display read-only list items. In this 1.2.0 version, an aesthetic style modification now renders read-only list items using a flat background color to give the user a visual understanding that they aren&#8217;t clickable. You can see an example of this change by looking at the <a
title="Read-only list demo" href="http://jquerymobile.com/demos/1.2.0/docs/lists/lists-readonly-inset.html" target="_blank">read-only list demo</a>.</p><h3>Deprecated Methods and Properties of the Page Loading Widget</h3><p>In this version, several methods and properties of the page loading widget have been deprecated. In jQuery Mobile, you used to configure it using <code>$.mobile</code> properties like <code>loadingMessage</code>, <code>loadingMessageTextVisible</code>, and <code>loadingMessageTheme</code>. Now, they should be set using properties <code>text</code>, <code>textVisible</code>, and <code>theme</code> of the <code>$.mobile.loader.prototype.options</code> object respectively. So, the following configuration:</p><pre>$.mobile.loadingMessage = "Please wait...";
$.mobile.loadingMessageTextVisible = true;
$.mobile.loadingMessageTheme = "e";</pre><p>should be changed in this way:</p><pre>$.mobile.loader.prototype.options.text = "Please wait...";
$.mobile.loader.prototype.options.textVisible = true;
$.mobile.loader.prototype.options.theme = "e";</pre><p>Other changes have been implemented within the methods to show or hide the page loading widget. In fact, before the 1.2.0 version, developers used the <code>$.mobile.showPageLoadingMsg()</code> and the <code>$.mobile.hidePageLoadingMsg()</code> methods. They are now deprecated, so you should use <code>$.mobile.loading("show")</code> and <code>$.mobile.loading("hide")</code> instead if at all possible. Please note that using this new method, you also gain the option to overwrite the global configuration in favor of one specified passing a configuration object when you call those methods. An example of a call to show the widget using a local configuration is below.</p><pre>// Show the widget using theme swatch "e",
// a custom message and setting the text visible
$.mobile.loading(
   "show",
  {
    theme: "e",
    text: "foo",
    textVisible: true
  }
);</pre><h3>Conclusion</h3><p>Throughout this article, you&#8217;ve seen the new version&#8217;s features created by the jQuery Mobile team, including popups, minor list style improvements, and several deprecated methods and properties. Thanks to the expanded device compatibilities, you can spread even more your own applications among a greater array of operating systems and markets.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/whats-new-in-jquery-mobile-1-2-0/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Building Apps That Build Apps: An Interview With The Co-founder of TheAppBuilder</title><link>http://www.sitepoint.com/theappbuilder-windows-phone-8-app-playground-geolocation-and-more-updates/</link> <comments>http://www.sitepoint.com/theappbuilder-windows-phone-8-app-playground-geolocation-and-more-updates/#comments</comments> <pubDate>Thu, 08 Nov 2012 18:23:14 +0000</pubDate> <dc:creator>Zsombor Markus</dc:creator> <category><![CDATA[Android Discussion]]></category> <category><![CDATA[iOS Discussion]]></category> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Windows Phone Discussion]]></category> <category><![CDATA[android]]></category> <category><![CDATA[Discussion]]></category> <category><![CDATA[HTML5 Tutorials & Articles]]></category> <category><![CDATA[ios]]></category> <category><![CDATA[windows phone]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5033</guid> <description><![CDATA[Those of you who dream of a successful startup better pay attention to TheAppBuilder. It’s one of those stories where a couple of savvy developers discover a market gap and come up with a well-executed and successful solution. It’s been about 6 months since I had a chat with TheAppBuilder team. I have been following [...]]]></description> <content:encoded><![CDATA[<p></p><p>Those of you who dream of a successful startup better pay attention to <a
href="http://theappbuilder.com/">TheAppBuilder</a>. It’s one of those stories where a couple of savvy developers discover a market gap and come up with a well-executed and successful solution.</p><p>It’s been about 6 months since <a
href="http://buildmobile.com/theappbuilder-interview-with-matthew-david/">I had a chat</a> with TheAppBuilder team. I have been following JamPot’s updates ever since, and I must say they’ve been working so hard that the product is now completely transformed. While the core of their business still lies in providing a super easy workflow to create multi-platform mobile apps, they have implemented some serious changes and new features.</p><p>This time, I interviewed Michael Barr, co-founder of JamPot. We discussed their latest updates and future plans.</p><p
style="text-align: center"><a
href="http://buildmobile.com/theappbuilder-windows-phone-8-app-playground-geolocation-and-more-updates/start-2/" rel="attachment wp-att-5055"><img
class="aligncenter  wp-image-5055" src="http://buildmobile.com/files/2012/11/start1.jpg" alt="" width="560" height="405" /></a><a
href="http://buildmobile.com/theappbuilder-windows-phone-8-app-playground-geolocation-and-more-updates/figure2-9/" rel="attachment wp-att-5042"><br
/> </a><br
/> <em><strong></strong></em></p><p><em><strong>The obvious question: how did the whole thing start?</strong></em><div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>It started just about two years ago. It was just me and another technologist. We had both been working in various sections of the IT community. I was mainly involved in building content management web solutions. We had both been asked to start thinking about mobile solutions for a number of clients. We got together and said: there must be a better way to build mobile apps fast.</p><p>We were predominantly focused on iOS apps at the time. I pretty much enjoyed building stuff in Objective-C, but not everyone has those technical skills. So, from there we solidified the idea, secured the funding, and found few like-minded guys. Long story short: we brought TheAppBuilder to where it is today. And that is far beyond what we expected.</p><p><em><strong>Tell me about your story with the CMS you originally worked on. TheAppBuilder could be looked at as a type of CMS. How do they relate?</strong></em></p><p>It was at a small company in Northern-Ireland called <a
href="http://www.webbelief.com/Services.aspx">WebBelief</a>. It&#8217;s focused on delivering content managed web solutions based on the .NET platform. This business model was successful in the days when you could charge a reasonable amount for a content-managed website. However everybody knows that it was gonna be a short-lived time in the web. Many of the solutions move away from being developer tools to cater directly to the end user.</p><p>This is exactly the idea we have behind TheAppBuilder. We didn’t want to build another developer tool after we’d seen what happened when professional software such as FrontPage or Dreamweaver and CMS options like WordPress did to the industry. We wanted to allow anyone to create an app, same way that WordPress works with websites. We want to cater to the small business owner who just wants a presence on mobile marketplaces. He/she might not have coding skills, but they really shouldn’t need any to use TheAppBuilder. Those who want to take things further and have some HTML5 skills can use some really fancy techniques. We’ve even seen people building and embedding games using HTML5 canvas.</p><p
style="text-align: center"><a
href="http://buildmobile.com/theappbuilder-windows-phone-8-app-playground-geolocation-and-more-updates/workflow2/" rel="attachment wp-att-5041"><img
class="aligncenter  wp-image-5041" src="http://buildmobile.com/files/2012/11/workflow21.jpg" alt="" width="517" height="340" /></a><br
/> <em><strong></strong></em></p><p><em><strong>Are you planning to implement some kind of e-commerce solution to help app owners boost their business through the app?</strong></em></p><p>We have a pretty extensive roadmap with some exciting ideas. Payments is one of those things we are currently looking at. People are constantly asking us how they might enable purchases within the app. We are looking at some of the big players in the payments and e-commerce field to see how could we implement their technology. There are some other interesting third-party solutions that we also would like to enable in our apps.</p><p><em><strong>Let’s move on to the updates. The last time I spoke to you guys, the product had just gone public. How has the product been evolving in the past 6 months? </strong></em></p><p>When I look back and see how many things have happened it’s almost scary!</p><p>In the early days, in order to deliver the apps across all major platforms, we had to use a few specific tools. One of these was the Adobe Air platform, which really helped us to deal with both Android and iOS. Although Air was a good introduction to the world of cross-platform development, the apps produced were not of sufficient quality for us to use, and our customers were not happy with the user experience that the cross-compiled solution provided.</p><p>We have since moved on to completely native clients: Objective-C for iOS, Java for Android, and C# for Windows Phone. We have also launched our new Windows 8 client, and we are the first app building company to support native Windows 8 apps. (Check out the <a
href="http://apps.microsoft.com/webpdp/en-US/app/steve-ballmer/e1cd420c-8d42-4cc0-aa54-3254b41b7ed5">Steve Ballmer app in the Windows 8 store</a>.) This is especially interesting, because Microsoft are focusing a lot on the transition between PC’s, tablets, and mobile phones and providing a consistent UI and environment for the user, regardless of what device they choose to consume their content.</p><p
style="text-align: center"><a
href="http://buildmobile.com/theappbuilder-windows-phone-8-app-playground-geolocation-and-more-updates/windowsp/" rel="attachment wp-att-5037"><img
class="aligncenter  wp-image-5037" src="http://buildmobile.com/files/2012/11/windowsp.jpg" alt="" width="561" height="348" /></a></p><p>For a while, we kept Adobe Air for the desktop editor, but then we realized it could be far better if we moved everything to a fully web-based interface. That’s probably the biggest change. The whole app creation workflow is completely web-based from start to finish, and it&#8217;s accessible even from tablets.</p><p>We also added a whole new templating mechanism. To achieve this, we really had to look into how people use our app builder. If you start creating an app, the first thing you will find in TheAppBuilder Wizard is a selection of templates. If you are about to create an app for a restaurant, you can pick the Restaurant/Bar template, which is geared up with the relevant tabs and functionalities. Of course, you can customize all of these just a few steps later. We are planning to allow our users to submit their self-designed premium templates, which others can purchase. This will be a great way to allow our community to feed in and even return a bit of their time investment as well.</p><p>One of the most exciting new addition is Maps. It’s an easy way to set the geolocation of your business or any of your upcoming events. This can also be displayed in an augmented reality view on compatible devices. Up until now, it has been only using Google Maps’ API, however with the launch of iOS6, it’s set to work with Apple’s map back-end too.</p><p>We added a few other new sections as well. Gallery provides an easy solution to upload and manage your photos. Lists are extremely useful if you want to upload a selection of products. We also made a separate section for events. Apart from Twitter and Facebook, we also have YouTube gallery, which provides easy access to your videos. Of course, if you need any additional functionality you can always add an HTML5 tab and apply your own custom code.</p><p
style="text-align: center"><a
href="http://buildmobile.com/theappbuilder-windows-phone-8-app-playground-geolocation-and-more-updates/section/" rel="attachment wp-att-5043"><img
class="aligncenter  wp-image-5043" src="http://buildmobile.com/files/2012/11/section.jpg" alt="" width="499" height="327" /></a></p><p>We also introduced private apps. We saw a need for enterprise apps that aren&#8217;t designed for the public. These provide a way to distribute news and updates for a selected group of users, and we are working with some large enterprise clients who are looking to disseminate internal information to their employees via custom mobile apps.</p><p>One of our most recent updates includes nesting. This allows users to place any type of module within a standard list view, which opens up a world of possibilities to create very powerful apps. For example, a single content section can contain many sub-galleries, a news feed can be broken down into different sub-sections, users could even create product catalogs with categories and sub-categories.</p><p><em><strong>Do you see any potential in NFC (Near Field Communication) at the moment?</strong></em></p><p>Absolutely, we could probably do great things with it, but we need to wait until manufacturers catch up on the hardware side first. Then the technology can become mainstream and it will be worth dealing with it.</p><p><em><strong>Do you still keep up with the look and UX of the different platforms or do you plan to go your own way?</strong></em></p><p>We remain completely native, and we have embraced the features and behavior of the various operating systems even more closely. Our Android apps are now in line with JellyBean’s native UI, and the iOS apps bring you the distinct iPhone that is familiar to iOS users.</p><p>If you build an app, you also get an iPad beta version of it. This is a slightly different accommodation that&#8217;s tailor-made to this faster and larger device. The main point is that the app owners really just need to take care of the content and we do the hard work of releasing the apps on as many major platforms as possible.</p><p
style="text-align: center"><a
href="http://buildmobile.com/theappbuilder-windows-phone-8-app-playground-geolocation-and-more-updates/platforms-2/" rel="attachment wp-att-5057"><img
class="aligncenter  wp-image-5057" src="http://buildmobile.com/files/2012/11/platforms1.jpg" alt="" width="591" height="388" /></a></p><p><em><strong>Are there any other ways you are planning the community to get involved?</strong></em></p><p>In the next few months we are planning to open up a developer API. That will allow people to discover the app structure via web services, which will allow developers to build native clients for devices that we don’t currently support.</p><p><em><strong>Now you offer the HTML5 version of the applications for free. Do see growing interest in web solutions opposed to native?</strong></em></p><p>We are starting to see a huge uptick in the web solutions and maybe a bit of a slow down on the native side. This is partially due to the strict approval processes of the app stores. Apple, Google, and Microsoft really wants to control what goes public, and this can sometimes make gaining approval difficult. Not necessarily because of the content itself, but the structure and behavior of the apps.</p><p>If you put together an HTML5 web app, you have the freedom to do almost anything you want. This free, easy solution allows regular people to create apps for purposes like birthday parties, or perhaps for non-profit organizations to stay in touch with their community in a really cost-efficient way. Some high-end applications may require access to hardware that only native code can allow, but HTML5 is quickly closing the gap to native code.</p><p>At the moment we have over 50,000 apps submitted and we see more every day. We’ve been really lucky to have such momentum without putting any particular effort into advertising.</p><p><em>Have you created any apps with TheAppBuilder? <strong></strong>Do you feel that HTML5 capabilities are coming progressively closer to that of native code, or do you think that truly robust apps will always need Objective-C, Java, or C# to meet their needs?<br
/> </em></p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/theappbuilder-windows-phone-8-app-playground-geolocation-and-more-updates/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>What&#8217;s New in PhoneGap 2.2?</title><link>http://www.sitepoint.com/whats-new-in-phonegap-2-2/</link> <comments>http://www.sitepoint.com/whats-new-in-phonegap-2-2/#comments</comments> <pubDate>Tue, 06 Nov 2012 03:56:25 +0000</pubDate> <dc:creator>Aurelio De Rosa</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Development]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Cordova]]></category> <category><![CDATA[iPod Touch]]></category> <category><![CDATA[Phonegap]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=5026</guid> <description><![CDATA[The day after Halloween, we all received a great gift from Adobe — the release of the latest version of Cordova, better known as PhoneGap. The new 2.2.0 version introduced several interesting supplementary features and enhancements. This article will show you a brief overview on these new changes to PhoneGap. As you may already know, PhoneGap [...]]]></description> <content:encoded><![CDATA[<p></p><p>The day after Halloween, we all received a great gift from Adobe — the release of the latest version of Cordova, better known as PhoneGap. The new 2.2.0 version introduced several interesting supplementary features and enhancements. This article will show you a brief overview on these new changes to PhoneGap.</p><p>As you may already know, PhoneGap is an open source framework that allows you to build cross-platform mobile apps using consolidated web technologies like HTML, CSS, and JavaScript. The speed with which the Nitobi team and now the Adobe team now releases new PhoneGap versions is impressive, and every release has consistently been a solid a step forward. Here&#8217;s what&#8217;s the latest version, 2.2.0, has to offer.</p><p>The most significant change, in my opinion, is the support for the brand-new Microsoft Windows 8 operating system. Starting with this release, you&#8217;ll be able to develop your PhoneGap applications for Windows 8. To develop these apps, you&#8217;ll have to develop in Windows 8. And, just like the Windows Phone 7 equivalents, you&#8217;ll have to use Visual Studio as your <abbr
title="Integrated development environment">IDE</abbr>. The official online documentation has a <a
title="Getting started with Windows 8 PhoneGap guide" href="http://docs.phonegap.com/en/2.2.0/guide_getting-started_windows-8_index.md.html#Getting%20Started%20with%20Windows%208" target="_blank">getting started guide</a> that will help you to set up the environment that you need to develop your mobile apps using PhoneGap.</p><p>The Cordova team has also announced that in the next releases they&#8217;ll also add the support for Windows Phone 8, not to be confused with the Windows 8 desktop operating system. They&#8217;ve also announce massive performance increases both on <a
title="Articles about Android" href="http://buildmobile.com/category/android" target="_blank">Android</a> and <a
title="Articles about iOS" href="http://buildmobile.com/category/ios" target="_blank">iOS</a>. The team announced that the PhoneGap 2.2.0 JavaScript bridge will improve your apps execution by a factor of 15-25 compared to the older versions.</p><p>Additionally, the Globalization plugin has been integrated into the PhoneGap core. This plugin allows you to get information about user&#8217;s locale and timezone using methods like <code>getPreferredLanguage()</code>, <code>getLocaleName()</code> and <code>getCurrencyPattern()</code>. In addition, it has methods to perform operations on these topics like <code>stringToDate()</code> and <code>numberToString()</code>. These improved methods can make for highly personalized app experiences that measure up very well against native apps.</p><p>Currently the supported platforms are Android, BlackBerry WebWorks (OS 5.0+), and iOS. But, as always, in the next releases the support will be extended to other operating systems. In case you need more details you can read the <a
title="Globalization documentation" href="http://docs.phonegap.com/en/2.2.0/cordova_globalization_globalization.md.html" target="_blank">specific section of the official documentation</a>.</p><p>A couple of changes have been introduced for the FileTransfer API. Citing the <a
title="FileTransfer API official documentation" href="http://docs.phonegap.com/en/edge/cordova_file_file.md.html#FileTransfer" target="_blank">official documentation</a>, <q
cite="http://docs.phonegap.com/en/edge/cordova_file_file.md.html#FileTransfer">FileTransfer is an object that allows you to upload files to a server or download files from a server.</q> The PhoneGap curators have also added the support for the <code>onprogress</code> event to meticulously track of the progress of a transfer operation and add the possibility to abort a transfer operation. This <abbr
title="Application programming interface">API</abbr> is one of those that are already available for Windows 8 too. As well as the Globalization <abbr
title="Application programming interface">API</abbr>, the Splashscreen <abbr
title="Application programming interface">API</abbr> has been added to the official documentation, so now you can find a <a
title="Splashscreen API official documentation" href="http://docs.phonegap.com/en/edge/cordova_splashscreen_splashscreen.md.html" target="_blank">specific page</a> within the PhoneGap documentation. This new API allows developers to show or hide the application&#8217;s splash screen. Currently, the support is only for Android and iOS.</p><p>Several changes have been made to the process in which mobile developers create an Android plugin that allows extension of PhoneGap&#8217;s basic functionality. Now, it must have at least one Java class that extends the <code>CordovaPlugin</code> class, which replaced the old <code>Plugin</code> class. Like in previous versions, a plugin must override one of the execute methods, but now PhoneGap developers have a new <code>execute()</code> method that allows them to pass a large amounts of data to the native side. It also has a new <code>onReset()</code> method, called when top level navigation changes. You can read more details on this matter looking at the <a
title="" href="http://docs.phonegap.com/en/2.2.0/guide_plugin-development_android_index.md.html#Developing%20a%20Plugin%20on%20Android" target="_blank">official documentation page</a>.</p><h3>Conclusion</h3><p>PhoneGap is an extremely robust mobile development tool, and it is curated constantly and carefully. In addition to the explained new features, a lot of bugs have been fixed and many minor enhancements have been added. If you want a detailed list, you can read the <a
title="Official changelog" href="https://github.com/phonegap/phonegap/blob/8a3aa471f7c614d7562ae2fe444e9a02f1a064b0/changelog" target="_blank">official changelog</a>, or the two platform-specific posts published; one <a
title="What's new in PhoneGap 2.2.0 for Android" href="http://simonmacdonald.blogspot.it/2012/10/whats-new-in-phonegap-android-220.html" target="_blank">post on Android</a> and the second <a
title="What's new in PhoneGap 2.2.0 for iOS" href="http://shazronatadobe.wordpress.com/2012/10/27/whats-new-in-cordova-ios-2-2-0/" target="_blank">post on iOS</a>. Maybe you&#8217;ll find that they fixed exactly the feature you needed to make PhoneGap your development framework of choice.</p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/whats-new-in-phonegap-2-2/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>4 Ways To Avoid Scope Creep And Still Please Your Clients</title><link>http://www.sitepoint.com/4-ways-to-avoid-scope-creep-and-still-please-your-clients/</link> <comments>http://www.sitepoint.com/4-ways-to-avoid-scope-creep-and-still-please-your-clients/#comments</comments> <pubDate>Thu, 12 Jul 2012 16:03:09 +0000</pubDate> <dc:creator>Nicolas Acuna and Mikka Olsson</dc:creator> <category><![CDATA[Android Discussion]]></category> <category><![CDATA[iOS Discussion]]></category> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Windows Phone Discussion]]></category> <category><![CDATA[Discussion]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=4714</guid> <description><![CDATA[Landing a mobile development deal is a tough task and a rewarding accomplishment. But, as anyone who has created an app knows, landing the deal is just the beginning. As the production process begins, designers and developers need to be aware of a very tricky problem called scope creep. Sometimes, clients feel that — since they [...]]]></description> <content:encoded><![CDATA[<p></p><p>Landing a mobile development deal is a tough task and a rewarding accomplishment. But, as anyone who has created an app knows, landing the deal is just the beginning. As the production process begins, designers and developers need to be aware of a very tricky problem called <em>scope creep</em>.</p><p>Sometimes, clients feel that — since they have awarded you the deal and money has been exchanged — they have the right to request features and changes that are beyond the original scope of the project. This is rarely done of our malice or bad intentions, but it still puts designers and developers in a difficult position, since we have to figure out how to say &#8220;no&#8221; without jeopardizing the relationship.</p><p>So, how do we avoid scope creep? Here are four tips that have worked for us.</p><h3>Define the Scope</h3><p>This tip may seem obvious, but defining the scope in clear, precise written terms is surprisingly difficult. As we begin to sense that the client is leaning towards signing the deal, we often feel the need to rush, skip important details, and complete the agreement as soon as possible. The problem with rushing is that the scope will not be as clear and comprehensive as it needs to be, which in turn can very likely lead to scope creep. Any areas of work that weren&#8217;t explicitly defined will be interpreted two different ways by the client and the developer, respectively. The client will see vague, undefined, areas of work as a wide open canvas with lots of possibilities. The developer, however, will probably consider those same areas of work as unmentioned, unspecified, and thus not a part of the agreement.</p><p>Because of this all-too-common difference in perception, it&#8217;s important to define all of the moving parts of a project with painstaking clarity. You might even want to state explicitly what work <em>isn&#8217;t</em> part of the project; this will help define the boundaries very clearly, which will in turn keep scope creep to a minimum.</p><h3>Set a High Rate for Out-of-Scope Work</h3><p>Add a simple (but important) line in the contract stating that all out-of-scope work (changes, additions, etc.) will be charged at an &#8220;X&#8221; hourly rate and will extend the timeline of the project. If your client&#8217;s extra requests are reasonable, mention this rate and ask them if they want to be invoiced. This approach gives your client good options options and decision-making control without damaging the relationship or causing you to take on unexpected, unpaid work. If accepted by the client, considering amending the original contract to expand the scope to the newly agreed standard and rate.</p><h3>Be Courageous and Say &#8220;No.&#8221; Use the Sandwich Technique</h3><p>Are you familiar with the sandwich technique? If not, it works like the following:</p><ol><li>Start out with a positive statement. It could be appreciation for the client&#8217;s care for the project, or the value of the (unplanned) idea/feature that they want to add to the project.</li><li>State the negatives in the middle. Be honest, direct, and objective. Talk about how adding another feature is not a good idea, and how they would cost more money, take more time, or they may not even be possible.</li><li><h3>Then, close the sandwich with another layer of positivity. This could be a statement like &#8220;the project is going well,&#8221; &#8220;we&#8217;re very excited for the project,&#8221; &#8220;thanks for bring this idea to us,&#8221; or &#8220;that sounds like a great idea for the next version of this project.&#8221;</h3></li></ol><h3>Turn Scope Creep into the Feature Set for the Next Version of the App</h3><p>Most scope creep includes tweaks, changes, and additions that have the potential to improve the project, and are thus are easily justified by the client. The important questions to ask are not whether the project should include these additions, but rather what version should include these new additions. Talk to your client about a minimal feature set for Version 1 and make a list of additions for the next versions. To help clients understand, we have explained versioning like this: &#8220;We all have ideas that can make the app better but at this point they are educated guesses, let’s wait until we launch the app and users ask for these changes/features. This way, it’s no longer an assumption but a defined need.&#8221;</p><p>Hopefully these tips can help you protect the integrity of the project, your time, and your profit margins. If you’re honest with your client and constantly talk things through, you can turn the scope creep problem into an opportunity to create a better app.</p><p><em>Have you had any trouble with scope creep? How have you handled surprise additions to your mobile projects?</em></p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/4-ways-to-avoid-scope-creep-and-still-please-your-clients/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Offline Capabilities: Native Mobile Apps vs. Mobile Web Apps</title><link>http://www.sitepoint.com/offline-capabilities-native-mobile-apps-vs-mobile-web-apps/</link> <comments>http://www.sitepoint.com/offline-capabilities-native-mobile-apps-vs-mobile-web-apps/#comments</comments> <pubDate>Fri, 04 May 2012 16:00:23 +0000</pubDate> <dc:creator>Lee Whitney</dc:creator> <category><![CDATA[Mobile]]></category> <category><![CDATA[Mobile Web Development]]></category> <category><![CDATA[Mobile Web Discussion]]></category> <category><![CDATA[Discussion]]></category> <category><![CDATA[mobile]]></category> <guid
isPermaLink="false">http://buildmobile.com/?p=4038</guid> <description><![CDATA[Many mobile apps could benefit from working without an Internet connection. Here, we take a look at how offline capabilities affect the decision of developing native apps vs. mobile web based apps. Apps that continue to work while “offline” or “disconnected” have been important since laptops first became common. A classic example is a salesperson [...]]]></description> <content:encoded><![CDATA[<p></p><p><strong>Many mobile apps could benefit from working without an Internet connection. Here, we take a look at how offline capabilities affect the decision of developing native apps vs. mobile web based apps.</strong></p><p>Apps that continue to work while “offline” or “disconnected” have been important since laptops first became common. A classic example is a salesperson that wants to enter data while travelling, and then have that data automatically sync with a server when they get back to the office. Even with Wi-Fi and cellular broadband, there are many scenarios (airplanes, Wi-Fi only devices, remote areas) where people still need to work without a connection.</p><p>So, when workers need offline mobile capabilities, do we need to develop a native mobile application on the device, for example with Objective-C for the iPhone, or is a mobile web-based app a viable option?</p><p>It turns out, the answer is changing very quickly, because more HTML5 capabilities like local storage and local databases are being added to mobile browsers to support offline capabilities.</p><h3>Short Answer: Mobile Web Apps are Ready to Go Offline</h3><p>The short answer is yes, it is now a practical option to develop an entirely web-based mobile app with offline capabilities for many scenarios. Notice that I say many scenarios, not all. At this point in time, it still depends on what offline capabilities are needed. Specifically, the main factors are how much offline data is needed and what indexing capabilities are required.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><h3>How is an Offline Web App Even Possible?</h3><p>To understand what offline scenarios are good candidates for a mobile web app, it helps to first understand the key technologies that make it possible.</p><p>Mobile web apps can be built with three core capabilities, and all of these are part of the new HTML5 standards:</p><ol><li>Browser application caching of pages</li><li>Local storage</li><li>Local database</li></ol><p><a
href="http://appcachefacts.info/">Browser application caching</a> allows a manifest to be created listing pages that should be cached and made available offline. Normally, when you visit a URL, a server request is made to return the page. Setting up an application cache manifest tells the browser how it can use pages already downloaded rather than just immediately displaying an error when there is no longer a network connection.</p><p><a
href="http://en.wikipedia.org/wiki/Web_storage">Local Storage</a> is a standard that retains local web app data (even when the browser is shut down) using a key/value system that works similarly to browser cookies. However, it is different from browser cookies in two important ways. First, cookies are resent to the server with every HTTP request, and it would waste a lot of bandwidth to resend all offline data when the server doesn’t need it. Secondly, cookies tend to max out at around 4k of data, while local storage usually gives an application as much as 5 MB of data to work with per domain. 5 MB may not sound like much, but when used carefully, it can go a very long way in terms of offline local storage.</p><p><a
href="http://en.wikipedia.org/wiki/Indexed_Database_API">Local Database</a> removes the 5MB limit of local storage and allows data to be indexed so that multiple properties can be queried quickly. This is only an HTML5 proposed standard at present; only Internet Explorer and Firefox have implemented it so far. Safari and Chrome use an older, deprecated system called Web SQL. <em>This means if you need this level of functionality, there is a significant amount of extra work and complexity to support both standards across all major browsers.</em> Hopefully, that won&#8217;t always be the case and major browsers will conform to the finalized HTML5 specifications.</p><h3>So, is a Mobile Web App a Good Solution for Offline Features or Not?</h3><p>The key here is whether your app needs the higher storage limits (greater than 5MB) and indexing features that come with a Local Database. If Local Database and major browser support are needed, it stacks the deck against a web app because of the extra work and complexity needed to support two very different standards.</p><p>However, if you can get by <em>without</em> using a Local Database, and your offline storage needs are below 5MB, then using Local Storage and Browser Application Caching alone will allow for a clean solution that works well across major browsers.</p><p>To decide if Local Storage is good enough, consider these constraints for the app:</p><ol><li>The total size of data you need to keep offline</li><li>The number of data items (records) you need to keep offline</li><li>The number of data properties (fields) you need to search within</li></ol><p>If you need less than 5MB at a time offline, Local Storage fits the bill. If you have a large number of records but usually only one field to search on, Local Storage is still a good fit. If you have many fields to search on but the total number of records is small, again Local Storage would work nicely.</p><p>By answering these questions about your app, you should have a good idea about the practicality of a mobile offline solution.</p><h3>There is Much More to the Native vs. Web Decision</h3><p>Here, we’ve focused mainly on issues around offline capabilities for mobile apps. However, keep in mind the more general decision criteria still apply.</p><p>For example, if you need to allow a user to take a photo with a built-in camera and upload it to a server, a mobile web app simply is not capable of meeting your needs. Beyond the device capabilities questions, there are also the issues of what skill set you want your company to invest in and what types of apps you tend to develop.</p><p>Finally keep in mind that “native vs. web” is a simplification of the choices. Mobile web apps can be built by just adding a viewport tag to an existing site, adaptive rendering (CSS media queries), and dedicated views for mobile devices. Native apps can be built with the vendor toolkit (like Objective-C), or with an abstraction platform (like Titanium), or by bundling HTML with a native library (like Phonegap). The &#8220;native vs. web&#8221; dilemma shouldn&#8217;t be seen as two polar extremes; it is actually a continuum of choices from one end of the spectrum to the other.</p><h3>Think Offline</h3><p>It turns out that the variety of mobile apps that can benefit from offline features is quite diverse. If you’re in the process of making a platform decision to build a mobile app, it’s a good idea to think through all of the offline possibilities that have been discussed above as part of the process. You&#8217;d be surprised how many mobile projects can benefit from HTML5&#8242;s new offline capabilities.</p><p><em>Do you have any experience using HTML5&#8242;s caching, local storage, or local databases? Do you use any mobile web apps that employ offline storage?</em></p><div
class='after-content-widget-1'><div
id="sitepointcontextualcontentmanagerwidget-5" class="widget widget_sitepointcontextualcontentmanagerwidget"><div
class="dfp-ad show-desktop"><div
id="div-gpt-ad-1340873946991-4" style="width: 728px; height: 90px;"> <script type="text/javascript">googletag.cmd.push(function() { googletag.display("div-gpt-ad-1340873946991-4"); });</script> </div></div></div></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/offline-capabilities-native-mobile-apps-vs-mobile-web-apps/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching 50/87 queries in 0.370 seconds using memcached
Object Caching 2220/2415 objects using memcached

Served from: www.sitepoint.com @ 2013-05-13 14:47:08 --