<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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://unfoldingneurons.com/" version="2.0">

<channel>
	<title>Mobiletuts+</title>
	
	<link>http://mobile.tutsplus.com</link>
	<description>iPhone, Android, Windows and BlackBerry mobile development tutorials.</description>
	<lastBuildDate>Mon, 13 Feb 2012 12:30:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MobileTuts" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="mobiletuts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">MobileTuts</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Supplementing iAd Placement with AdMob</title>
		<link>http://mobile.tutsplus.com/tutorials/iphone/supplementing-iad-placement-with-admob/</link>
		<comments>http://mobile.tutsplus.com/tutorials/iphone/supplementing-iad-placement-with-admob/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 12:30:23 +0000</pubDate>
		<dc:creator>Brandon Trebitowski</dc:creator>
				<category><![CDATA[iOS SDK]]></category>
		<category><![CDATA[AdMob]]></category>
		<category><![CDATA[iAd]]></category>
		<category><![CDATA[iPhone SDK]]></category>
		<guid isPermaLink="false">http://mobile.tutsplus.com/?p=9543</guid>
		<description>&lt;p&gt;Click-based advertising within a mobile application is a great way to make some money off of your free or inexpensive applications. While there are many choices out there, many iOS developers tend to go with the iAds platform for a variety of reasons including simplicity, aesthetics, and a high CPM.&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Although iAds is great, it&amp;#8217;s not quite the silver bullet you might be looking for. Being that iAds serves up very specific content from providers that must have a very specific contract with Apple, they often fail to fulfill  in certain situations. These situations might be in a geolocation that ads have not been placed in, foreign countries, or just lack of publishers for a given time period.&lt;/p&gt;
&lt;p&gt;In the production version of the &lt;a href="http://itunes.apple.com/us/app/caterpillar-hd/id479439790?mt=8"&gt;Caterpillar Application&lt;/a&gt; I created, I implemented iAds and noticed that the fill rate falls somewhere in the 75% range.  That&amp;#8217;s &lt;em&gt;not bad&lt;/em&gt;, however AdMob is usually somewhere in the 98% range! This brings me to the purpose of this post. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wouldn&amp;#8217;t it be great to have a hybrid solution to fill the ad spots with AdMob ads when iAds fails to deliver?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Step 1:&lt;/span&gt; iAds Setup&lt;/h2&gt;
&lt;p&gt;Since this is &lt;strong&gt;not&lt;/strong&gt; an iAds tutorial, we are just going to start with a &lt;em&gt;very&lt;/em&gt; simple iAds setup.  It will be a banner view at the top of a regular &lt;code&gt;UIView&lt;/code&gt;. I have begun with a single view project template and added the following code to the &lt;code&gt;ViewController.h&lt;/code&gt; file:&lt;/p&gt;
&lt;pre class="brush: objc; title: ;"&gt;
#import &amp;amp;lt;UIKit/UIKit.h&amp;amp;gt;
#import &amp;amp;lt;iAd/iAd.h&amp;amp;gt;

@interface ViewController : UIViewController&amp;amp;lt;ADBannerViewDelegate&amp;amp;gt;

@property (nonatomic, strong) ADBannerView *bannerView;

@end
&lt;/pre&gt;
&lt;p&gt;This is just declaring our banner ad that will be displayed in the view. Now, let&amp;#8217;s take a look at the code to display the ad banner inside of &lt;code&gt;ViewController.m&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="brush: objc; title: ;"&gt;
#import &amp;quot;ViewController.h&amp;quot;

@implementation ViewController

@synthesize bannerView = _bannerView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.bannerView = [[ADBannerView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
    [self.bannerView setRequiredContentSizeIdentifiers:[NSSet setWithObjects:
                                                        ADBannerContentSizeIdentifierPortrait, nil]];
    self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
    [self.bannerView setDelegate:self];
    [self.view addSubview:self.bannerView];
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
    NSLog(@&amp;quot;iad failed&amp;quot;);
}

@end
&lt;/pre&gt;
&lt;p&gt;This loads up an ADBannerView at the top of the window set in portrait mode.  As of right now, when iAds fail to load, it will simply print &amp;#8220;iAd Failed&amp;#8221; to the log as you can see in the &lt;code&gt;bannerView:didFailToReceiveAdWithError&lt;/code&gt; delegate method.  We will make use of this delegate method in order to replace the iAd banner with an AdMob banner.&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Step 2:&lt;/span&gt; AdMob Configuration&lt;/h2&gt;
&lt;p&gt;Start by downloading the iOS AdMob SDK here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.google.com/mobile/ads/download.html"&gt;http://code.google.com/mobile/ads/download.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Extract it somewhere on disk and drag every file into your project.  When asked if you want to copy the files in, check yes.&lt;/p&gt;
&lt;p&gt;There are also some libraries that you must link in, in order to use AdMob:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AudioToolbox&lt;/li&gt;
&lt;li&gt;MessageUI&lt;/li&gt;
&lt;li&gt;SystemConfiguration&lt;/li&gt;
&lt;li&gt;CoreGraphics&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once you have done this, you should be all set to implement the AdMob ads.&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Step 3:&lt;/span&gt; Fill the iAd Spot With AdMob&lt;/h2&gt;
&lt;p&gt;Let&amp;#8217;s start by revisiting &lt;code&gt;ViewController.h&lt;/code&gt; and updating the code to look like this:&lt;/p&gt;
&lt;pre class="brush: objc; title: ;"&gt;
#import &amp;amp;lt;UIKit/UIKit.h&amp;amp;gt;
#import &amp;amp;lt;iAd/iAd.h&amp;amp;gt;
#import &amp;quot;GADBannerView.h&amp;quot;

@interface ViewController : UIViewController&amp;amp;lt;ADBannerViewDelegate, GADBannerViewDelegate&amp;amp;gt;

@property (nonatomic, strong) ADBannerView *bannerView;
@property (nonatomic, strong) GADBannerView *admobBannerView;

@end
&lt;/pre&gt;
&lt;p&gt;All we did here was tell our class to be a delegate of &lt;code&gt;GADBannerView&lt;/code&gt; and created a property for a &lt;code&gt;GADBannerView&lt;/code&gt;. Also, make sure that you &lt;code&gt;@synthesize&lt;/code&gt; the admobBannerView in the &lt;code&gt;ViewController.m&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;The last part is to replace the iAd with the AdMob banner when it fails to load.  This can be done by adding some code to the &lt;code&gt;bannerView:didFailToReceivedAdWithError&lt;/code&gt; method in &lt;code&gt;ViewController.m&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="brush: objc; title: ;"&gt;
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {

    // 1
    [self.bannerView removeFromSuperview];

    // 2
    _admobBannerView = [[GADBannerView alloc]
                    initWithFrame:CGRectMake(0.0,0.0,
                                             GAD_SIZE_320x50.width,
                                             GAD_SIZE_320x50.height)];

    // 3
    self.admobBannerView.adUnitID = @&amp;quot;a14ec3f0a2028f2&amp;quot;;
    self.admobBannerView.rootViewController = self;
    self.admobBannerView.delegate = self;

    // 4
    [self.view addSubview:self.admobBannerView];
    [self.admobBannerView loadRequest:[GADRequest request]];
}
&lt;/pre&gt;
&lt;p&gt;So, here&amp;#8217;s what is going on:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We remove the iAd banner from the current view. It will no longer be needed for the duration of this session. You could get tricky and try to make more requests to iAds, but it&amp;#8217;s not really necessary.&lt;/li&gt;
&lt;li&gt;Here we instantiate the AdMob banner telling it to give us a banner that is 320 by 50 and place it at the top of the screen.&lt;/li&gt;
&lt;li&gt;This is the setup code for the AdMob banner  (Feel free to use my ad unit id ;) ).&lt;/li&gt;
&lt;li&gt;Finally, we add the AdMob banner to our view and tell it to fetch an ad.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&lt;span&gt;Step 4:&lt;/span&gt; Testing It Out&lt;/h2&gt;
&lt;p&gt;One thing to note is, you will never see iAds fail in the simulator.  Perhaps if you had the Internet disabled you might, but then you wouldn&amp;#8217;t even be able to fetch the AdMob ad.  The best way to test is to simply force the call of the &lt;code&gt;bannerView:didFailToReceiveAdWithError&lt;/code&gt; method from inside of &lt;code&gt;viewDidLoad&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="brush: objc; title: ;"&gt;
[self bannerView:self.bannerView didFailToReceiveAdWithError:nil];
&lt;/pre&gt;
&lt;p&gt;This will simulate the iAd failing and run through the code to fetch and display the AdMob ads.&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Step 5:&lt;/span&gt; Final Steps&lt;/h2&gt;
&lt;p&gt;Now that we have this dual solution in place, it is very unlikely that the user &lt;em&gt;won&amp;#8217;t&lt;/em&gt; see an ad.  However, there is still that slight chance that both iAd and AdMob fail. In that case, I like to give the user a break and not show them anything.  Sort of like a freebie for the day ;).  So, the final method will be called when AdMob fails to load. &lt;/p&gt;
&lt;pre class="brush: objc; title: ;"&gt;
- (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error {
    [self.admobBannerView removeFromSuperview];
}
&lt;/pre&gt;
&lt;p&gt;As you might expect, when AdMob fails, we remove its view from the screen and the user wins!&lt;/p&gt;
&lt;h2&gt;Wrap Up&lt;/h2&gt;
&lt;p&gt;I hope that you have found this tutorial useful for &lt;strike&gt;bleeding every penny out of your users&lt;/strike&gt; your development efforts. Although I have used AdMob, you are free to use this same design pattern to combine/chain any of the Ad networks that you prefer to work with.  You may download the source code for this tutorial at the very top.&lt;/p&gt;
&lt;p&gt;If you have any questions or comments, feel free to leave them here or &lt;a href="http://twitter.com/brandontreb"&gt;write me on Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Happy coding!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XHjIELAnixekVBbK8ldA_A54GaA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XHjIELAnixekVBbK8ldA_A54GaA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XHjIELAnixekVBbK8ldA_A54GaA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XHjIELAnixekVBbK8ldA_A54GaA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
		<wfw:commentRss>http://mobile.tutsplus.com/tutorials/iphone/supplementing-iad-placement-with-admob/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Corona SDK: Create a  Rapid Roll-like Game – Setup</title>
		<link>http://mobile.tutsplus.com/tutorials/corona/corona-sdk-create-a-rapid-roll-like-game-setup/</link>
		<comments>http://mobile.tutsplus.com/tutorials/corona/corona-sdk-create-a-rapid-roll-like-game-setup/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 01:36:41 +0000</pubDate>
		<dc:creator>Carlos Yanez</dc:creator>
				<category><![CDATA[Corona SDK]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Mobile Games]]></category>
		<guid isPermaLink="false">http://mobile.tutsplus.com/?p=9534</guid>
		<description>&lt;p&gt;In this tutorial series, you&amp;#8217;ll learn how to create your own version of the classic Rapid Roll game. Read on!&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;&lt;span&gt;Step 1:&lt;/span&gt; Application Overview&lt;/h2&gt;
&lt;div class="tutorial_image"&gt;
  &lt;img src="http://d339vfjsz5zott.cloudfront.net/Corona-SDK_RapidRoll-Game/1.png" alt="Corona SDK Game Figure 1" /&gt;
&lt;/div&gt;
&lt;p&gt;Using premade graphics, we will code an entertaining game using Lua and the Corona SDK APIs.&lt;/p&gt;
&lt;p&gt;The player will be able to move a character across the stage and the platforms using the Accelerometer and you will be able to modify the parameters in the code to customize the game.&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Step 2:&lt;/span&gt; Target Device&lt;/h2&gt;
&lt;div class="tutorial_image"&gt;
  &lt;img src="http://d339vfjsz5zott.cloudfront.net/Corona-SDK_RapidRoll-Game/2.png" alt="Corona SDK Game Figure 2" /&gt;
&lt;/div&gt;
&lt;p&gt;The first thing we have to do is select the platform we want to run our app within. By doing so, we&amp;#8217;ll be able to choose the size for the images we will use.&lt;/p&gt;
&lt;p&gt;The iOS platform has these characteristics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;iPad:&lt;/strong&gt; 1024x768px, 132 ppi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iPhone/iPod Touch:&lt;/strong&gt; 320x480px, 163 ppi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iPhone 4:&lt;/strong&gt; 960x640px, 326 ppi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because Android is an open platform, there are many different devices and resolutions. A few of the more common screen characteristics are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google Nexus One:&lt;/strong&gt; 480x800px, 254 ppi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Motorola Droid X:&lt;/strong&gt; 854x480px, 228 ppi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTC Evo:&lt;/strong&gt; 480x800px, 217 ppi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this tutorial we&amp;#8217;ll be focusing on the iOS platform with the graphic design, specifically developing for distribution to an iPhone/iPod touch, but the code presented here should apply to Android development with the Corona SDK as well.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 3:&lt;/span&gt; Interface&lt;/h2&gt;
&lt;div class="tutorial_image"&gt;
  &lt;img src="http://d339vfjsz5zott.cloudfront.net/Corona-SDK_RapidRoll-Game/3.png" alt="Corona SDK Game Figure 3" /&gt;
&lt;/div&gt;
&lt;p&gt;A simple and friendly interface will be used, this involves multiple shapes, buttons, bitmaps and more.&lt;/p&gt;
&lt;p&gt;The interface graphic resources necessary for this tutorial can be found in the attached download.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 4:&lt;/span&gt; Export Graphics&lt;/h2&gt;
&lt;div class="tutorial_image"&gt;
  &lt;img src="http://d339vfjsz5zott.cloudfront.net/Corona-SDK_RapidRoll-Game/4.png" alt="Corona SDK Game Figure 4" /&gt;
&lt;/div&gt;
&lt;p&gt;Depending on the device you have selected, you may need to export the graphics in the recommended ppi, you can do that in your favorite image editor.&lt;/p&gt;
&lt;p&gt;I used the &lt;em&gt;Adjust Size&amp;#8230;&lt;/em&gt; function in the Preview app on Mac OS X.&lt;/p&gt;
&lt;p&gt;Remember to give the images a descriptive name and save them in your project folder.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 5:&lt;/span&gt; App Configuration&lt;/h2&gt;
&lt;p&gt;An external file will be used to make the application go fullscreen across devices, the &lt;em&gt;config.lua&lt;/em&gt; file. This file shows the original screen size and the method used to scale that content in case the app is run in a different screen resolution.&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;
application =
{
    content =
    {
        width = 320,
        height = 480,
        scale = &amp;quot;letterbox&amp;quot;
    },
}
&lt;/pre&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 6:&lt;/span&gt; Main.lua&lt;/h2&gt;
&lt;p&gt;Let&amp;#8217;s write the application!&lt;/p&gt;
&lt;p&gt;Open your prefered Lua editor (any Text Editor will work, but you won&amp;#8217;t have syntax highlighting) and prepare to write your awesome app. Remember to save the file as &lt;em&gt;main.lua&lt;/em&gt; in your project folder.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 7:&lt;/span&gt; Code Structure&lt;/h2&gt;
&lt;p&gt;We&amp;#8217;ll structure our code as if it were a Class. If you know ActionScript or Java, you should find the structure familiar.&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;
Necesary Classes

Variables and Constants

Declare Functions

    contructor (Main function)

    class methods (other functions)

call Main function
&lt;/pre&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 8:&lt;/span&gt; Hide Status Bar&lt;/h2&gt;
&lt;pre class="brush: plain; title: ;"&gt;
display.setStatusBar(display.HiddenStatusBar)
&lt;/pre&gt;
&lt;p&gt;This code hides the status bar. The status bar is the bar on top of the device screen that shows the time, signal, and other indicators.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 9:&lt;/span&gt; Load Physics Engine&lt;/h2&gt;
&lt;p&gt;We&amp;#8217;ll make use of the poweful Box2D engine built into Corona, use this code to include it in your app:&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;
local physics = require('physics')
physics.start()
physics.setGravity(0, 0)
&lt;/pre&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 10:&lt;/span&gt; Background&lt;/h2&gt;
&lt;div class="tutorial_image"&gt;
  &lt;img src="http://d339vfjsz5zott.cloudfront.net/Corona-SDK_RapidRoll-Game/5.png" alt="Corona SDK Game Figure 5" /&gt;
&lt;/div&gt;
&lt;p&gt;A simple graphic is used as the background for the application interface, the next line of code stores it.&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;
-- Graphics
-- [Background]

local bg
&lt;/pre&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 11:&lt;/span&gt; Title View&lt;/h2&gt;
&lt;div class="tutorial_image"&gt;
&lt;p&gt;&lt;img src="http://d339vfjsz5zott.cloudfront.net/Corona-SDK_RapidRoll-Game/6.png" alt="Corona SDK Game Figure 6" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This is the Title View, it will be the first interactive screen to appear in our game, these variables store its components.&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;
-- [Title View]

local title
local startB
local creditsB

-- [TitleView Group]

local titleView
&lt;/pre&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 12:&lt;/span&gt; Credits&lt;/h2&gt;
&lt;div class="tutorial_image"&gt;
&lt;p&gt;&lt;img src="http://d339vfjsz5zott.cloudfront.net/Corona-SDK_RapidRoll-Game/7.png" alt="Corona SDK Game Figure 7" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This view will show the credits, year and copyright of the game, this variable will be used to store it.&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;
-- [CreditsView]

local credits
&lt;/pre&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 13:&lt;/span&gt; Score &amp;amp; Lives&lt;/h2&gt;
&lt;div class="tutorial_image"&gt;
  &lt;img src="http://d339vfjsz5zott.cloudfront.net/Corona-SDK_RapidRoll-Game/8.png" alt="Corona SDK Game Figure 8" /&gt;
&lt;/div&gt;
&lt;p&gt;The Score and Lives are handled by the following variables.&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;

local live
local livesTF
local lives = 3
local scoreText
local score = 0
local alertScore
&lt;/pre&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 14:&lt;/span&gt; Blocks &amp;amp; Player&lt;/h2&gt;
&lt;div class="tutorial_image"&gt;
  &lt;img src="http://d339vfjsz5zott.cloudfront.net/Corona-SDK_RapidRoll-Game/9.png" alt="Corona SDK Game Figure 9" /&gt;
&lt;/div&gt;
&lt;p&gt;The blocks are the platforms where our player will step on, stored in the next lines of code.&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;
-- [Blocks group, Player]

local blocks
local player
&lt;/pre&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 15:&lt;/span&gt; Game View&lt;/h2&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/Corona-SDK_RapidRoll-Game/10.png" alt="Corona SDK Game Figure 10" /&gt;
&lt;/div&gt;
&lt;p&gt;The gameView variable is a group that will contain all the game graphics, this will help us handle them all at once.&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;
--[GameView Group]

local gameView
&lt;/pre&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 16:&lt;/span&gt; Variables&lt;/h2&gt;
&lt;p&gt;These are the variables we&amp;#8217;ll use, read the comments in the code to know more about them. Some of their names are self explaining so there will be no comment there.&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;
-- Variables

local moveSpeed = 2
local blockTimer
local liveTimer
&lt;/pre&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 17:&lt;/span&gt; Code Review&lt;/h2&gt;
&lt;p&gt;Here is the full code written in this tutorial alongside with comments to help you identify each part:&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;
-- Blocks 'Rapid Roll' like Game
-- Developed by Carlos Yanez

-- Hide Status Bar

display.setStatusBar(display.HiddenStatusBar)

-- Physics

local physics = require('physics')
physics.start()
physics.setGravity(0, 0)

-- Graphics
-- [Background]

local bg

-- [Title View]

local title
local startB
local creditsB

-- [TitleView Group]

local titleView

-- [CreditsView]

local credits

-- [Score &amp;amp; Lives]

local live
local livesTF
local lives = 3
local scoreText
local score = 0
local alertScore

-- [Blocks group, Player]

local blocks
local player

--[GameView Group]

local gameView

-- Variables

local moveSpeed = 2
local blockTimer
local liveTimer
&lt;/pre&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Next Time&amp;#8230;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;In this part of the series you&amp;#8217;ve learned the interface and the basic setup of the game. Stay tuned for part two where we will handle the logic of the application, buttons behavior and more. See you next time!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tchRXWf2xrOCXipQKhpQnlRTbIw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tchRXWf2xrOCXipQKhpQnlRTbIw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tchRXWf2xrOCXipQKhpQnlRTbIw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tchRXWf2xrOCXipQKhpQnlRTbIw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
		<wfw:commentRss>http://mobile.tutsplus.com/tutorials/corona/corona-sdk-create-a-rapid-roll-like-game-setup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PhoneGap From Scratch: Camera API &amp; App Exporting</title>
		<link>http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch-camera-exporting/</link>
		<comments>http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch-camera-exporting/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 08:44:09 +0000</pubDate>
		<dc:creator>Shaun Dunne</dc:creator>
				<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<guid isPermaLink="false">http://mobile.tutsplus.com/?p=9519</guid>
		<description>&lt;div class="seriesmeta"&gt;This entry is part 5 of 5 in the series &lt;a href="http://mobile.tutsplus.com/series/phonegap-from-scratch/" class="series-763" title="PhoneGap From Scratch"&gt;PhoneGap From Scratch&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Want to learn how to use PhoneGap, but don’t know where to get started? Join us as we put together “Sculder”, not only a tribute to an excellent science fiction TV series, but a fully-fledged native mobile application for the believer in you!&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;Adding Camera Functionality&lt;/h2&gt;
&lt;p&gt;We left off in the last tutorial in this series just after getting our application into the Phonegap framework and awaiting to add our final piece of functionality: the device camera. The idea behind this tutorial is to allow the user to take a photo with the camera and then have it uploaded to a server. We will not cover the actual uploading of the image, but will leave the space for the functionality to be added. You can find plenty of examples of various implementations for uploading images via PHP, Ruby, and other server side languages elsewhere online. Instead, this tutorial will focus on taking the picture, displaying the picture taken, and giving the user an alert that the picture has been uploaded (the function that your server might fire when it returns a successful upload message).&lt;/p&gt;
&lt;p&gt;The first thing we need to do is add a button onto our page:&lt;/p&gt;
&lt;pre class="brush: xml; title: ;"&gt;
&amp;lt;div id=&amp;quot;camera&amp;quot;&amp;gt;
	&amp;lt;button class=&amp;quot;camera-control&amp;quot; onclick=&amp;quot;capturePhoto();&amp;quot;&amp;gt;Capture Photo&amp;lt;/button&amp;gt;

    &amp;lt;div style=&amp;quot;text-align:center;margin:20px;&amp;quot;&amp;gt;
        &amp;lt;img id=&amp;quot;cameraPic&amp;quot; src=&amp;quot;&amp;quot; style=&amp;quot;width:auto;height:120px;&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Next, we need to add a bit of styling for the button to make it look a bit nicer. As we are developing for decent browsers, we can take advantage of some CSS3 styles.&lt;/p&gt;
&lt;pre class="brush: xml; title: ;"&gt;

button.camera-control {
  background-color: #f3f3f3;
  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f3f3f3), color-stop(50%, #dddddd), color-stop(50%, #d2d2d2), color-stop(100%, #dfdfdf));
  background-image: -webkit-linear-gradient(top, #f3f3f3 0%, #dddddd 50%, #d2d2d2 50%, #dfdfdf 100%);
  background-image: linear-gradient(top, #f3f3f3 0%, #dddddd 50%, #d2d2d2 50%, #dfdfdf 100%);
  border-right: 1px solid #dfdfdf;
  border-bottom: 1px solid #b4b4b4;
  border-right: 1px solid #dfdfdf;
  -webkit-border-radius: 5px;
  border-radius: 5px;
  -webkit-box-shadow: inset 0 1px 0 0 white, 0 1px 0 0 #d5d5d5, 0 -1px 2px 1px #efefef;
  box-shadow: inset 0 1px 0 0 white, 0 1px 0 0 #d5d5d5, 0 -1px 2px 1px #efefef;
  color: #666;
  display: block;
  font: bold 16px &amp;quot;helvetica neue&amp;quot;, helvetica, arial, sans-serif;
  margin: 10px auto;
  padding: 7px 0;
  text-shadow: 0 1px 1px #fff;
  width: 150px;
}
button.camera-control:hover {
    background-color: #e5e5e5;
    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #e5e5e5), color-stop(50%, #d1d1d1), color-stop(50%, #c4c4c4), color-stop(100%, #b8b8b8));
    background-image: -webkit-linear-gradient(top, #e5e5e5 0%, #d1d1d1 50%, #c4c4c4 50%, #b8b8b8 100%);
    background-image: linear-gradient(top, #e5e5e5 0%, #d1d1d1 50%, #c4c4c4 50%, #b8b8b8 100%);
    -webkit-box-shadow: inset 0 1px 0 0 #f2f2f2, 0 1px 0 0 #c9c9c9, 0 -1px 2px 1px #e3e3e3;
    box-shadow: inset 0 1px 0 0 #f2f2f2, 0 1px 0 0 #c9c9c9, 0 -1px 2px 1px #e3e3e3; }
  button.camera-control:active {
    -webkit-box-shadow: inset 0 0 30px 0 #999999, 0 1px 0 0 white;
    box-shadow: inset 0 0 30px 0 #999999, 0 1px 0 0 white;
}
&lt;/pre&gt;
&lt;p&gt;If you now run and test your app (either the simulator or on a device) you should have a page like this:&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/5/phonegap-fs-5-1.png" alt="PhoneGap" /&gt;
&lt;/div&gt;
&lt;p&gt;Now we need to tie in the functionality. First, we start off with the &lt;code&gt;capturePhoto()&lt;/code&gt; function that will start up the camera:&lt;/p&gt;
&lt;pre class="brush: jscript; title: ;"&gt;
function capturePhoto(){
	navigator.camera.getPicture(uploadPhoto,null,{sourceType:1,quality:60});
}
&lt;/pre&gt;
&lt;p&gt;The success function, &lt;code&gt;uploadPhoto&lt;/code&gt;, is the next to be written. This function will upload the photo to our server, output the image to the screen, and also give the user a notification that the image has been uploaded. Let&amp;#8217;s start by outputting the image to the screen:&lt;/p&gt;
&lt;pre class="brush: jscript; title: ;"&gt;
function uploadPhoto(data){
// this is where you would send the image file to server

//output image to screen
	cameraPic.src = &amp;quot;data:image/jpeg;base64,&amp;quot; + data;
}
&lt;/pre&gt;
&lt;p&gt;One of the Phonegap APIs that we didn&amp;#8217;t really look at before, but we will use here, is the notification API. The Notification API is for alerting the user of an action performed, like the &lt;code&gt;alert()&lt;/code&gt; Javascript functionality, but tailored for the specific device that it is running in. It also has the ability to beep, vibrate, or just simply pop-up and alert a dialog message. For this app,  we are just going to be using the &lt;code&gt;notification.alert()&lt;/code&gt;, which is a dialog box that can accept some customizable options. The basic usage is:&lt;/p&gt;
&lt;pre class="brush: jscript; title: ;"&gt;
navigator.notification.alert(message, alertCallback, [title], [buttonName])
&lt;/pre&gt;
&lt;p&gt;Within our &lt;code&gt;uploadPhoto&lt;/code&gt; function, we are going to use the &lt;code&gt;notification.alert()&lt;/code&gt; to display a message that the photo has been uploaded to the server. Our code looks like this:&lt;/p&gt;
&lt;pre class="brush: jscript; title: ;"&gt;
navigator.notification.alert(
	'Your Photo has been uploaded',	// message
	okay,					        // callback
	'Photo Uploaded',            	// title
	'OK'                  			// buttonName
);
&lt;/pre&gt;
&lt;p&gt;We also need to write the &lt;code&gt;okay&lt;/code&gt; function to make sure that we don&amp;#8217;t run into any errors when we run our code. It can do anything you want it to, but it&amp;#8217;s better used when tied into the server. At the moment, the function will remain empty.&lt;/p&gt;
&lt;p&gt;Our &lt;code&gt;uploadPhoto()&lt;/code&gt; function now looks like this:&lt;/p&gt;
&lt;pre class="brush: plain; title: ;"&gt;
function uploadPhoto(data){
// this is where you would send the image file to server

	cameraPic.src = &amp;quot;data:image/jpeg;base64,&amp;quot; + data;
	// Successful upload to the server
	navigator.notification.alert(
		'Your Photo has been uploaded',  // message
		okay,                           // callback
	    'Photo Uploaded',              // title
	    'OK'                          // buttonName
	);

	// upload has failed Fail

	/* 

	if (failedToUpload){

	navigator.notification.alert(
		'Your Photo has failed to upload',
		failedDismissed,
	    'Photo Not Uploaded',
	    'OK'
		);

	}
	*/

}

function okay(){
	// Do something
}
&lt;/pre&gt;
&lt;p&gt;You will now need to run the application on a device, as the simulator has no access to a camera. After taking a picture, you will get the following alert:&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/5/phonegap-fs-5-2.png"&gt;
&lt;/div&gt;
&lt;p&gt;Our app is now complete and we are ready to export it as a working application and submit it to the stores!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Exporting for iOS&lt;/h2&gt;
&lt;p&gt;Please note that in order to distribute an application in the Apple App Store, you must have a paid-for developer certificate from Apple.&lt;/p&gt;
&lt;p&gt;Exporting for the iOS platform can be a bit of a challenge, but as long as you have all your certificates pre-installed and synced up with Xcode (which you would have to have done before you could test on a device) it shouldn&amp;#8217;t be too challenging after you&amp;#8217;ve done it once. If you double click on your project in Xcode and go to the Build Settings, make sure that your code signing identity is being used for the application.&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/5/phonegap-fs-5-3.png" /&gt;
&lt;/div&gt;
&lt;p&gt;You now need to go to &lt;code&gt;Product =&gt; Archive&lt;/code&gt; and send the app to the Archive (Found in the Organizer window). It&amp;#8217;s possible that you may get an error along the lines of &lt;code&gt;NSAutomaticpool is unavailable&lt;/code&gt;, this is due to Automatic Reference Counting (which is new). PhoneGap doesn&amp;#8217;t support it at the moment, so we just need to switch it off in the build settings for the project. If you go to the build setting and search for &lt;code&gt;-CLANG_ENABLE_OBJC_ARC&lt;/code&gt; you will find it and switch it to &amp;#8220;no&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Once that is done, you can head to &lt;a href="https://itunesconnect.apple.com"&gt;iTunes Connect&lt;/a&gt; and begin setting up your app there. Once you have logged in, click on &amp;#8220;Manage Applications&amp;#8221; and &amp;#8220;Add A New App&amp;#8221;. Go through the Wizard, add the iTunes Icon (512x512px in size) and at least one screenshot of the application. There are some other mandatory fields such as an SKU number (this is a tracking number for yourself. I personally use 0001 to start and continue from there) and a description. Once you have finished filling out the form, click submit.&lt;/p&gt;
&lt;p&gt;Once finished you will be presented with the following&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/5/phonegap-fs-5-4.png"&gt;
&lt;/div&gt;
&lt;p&gt;At first, your Applications Status will be &amp;#8220;Prepare for Upload&amp;#8221;, so you need to click &amp;#8220;View Details&amp;#8221; and then &amp;#8220;Binary Upload&amp;#8221;. Once you&amp;#8217;ve gone through this, your status will now be &amp;#8220;Ready for Upload&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Back in Xcode&amp;#8217;s Organizer we can run the Validate option to check that our app is all good to be submitted to the App Store and hopefully the app will get by with no validation errors.&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/5/phonegap-fs-5-5.png"&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Jumping through all the hoops that Apple presents is not an easy task to master. If you are getting various errors to do with builds failing because provisioning profiles couldn&amp;#8217;t be found etc, etc, do a quick search on Google and you will find the solution. There are 100 different scenarios with miss-matched certificates that I have faced while trying to build an app for iOS, all solved by using Google. If you are consistently running into issues, feel free to leave a comment below and I will try to help!&lt;/p&gt;
&lt;p&gt;Now that our app is valid, we can submit it to the App Store. We click submit, check that our Application and Identity are correct, and then wait for the upload.&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/5/phonegap-fs-5-6.png"&gt;
&lt;/div&gt;
&lt;p&gt;Once done, you can login to iTunes Connect and see that the app is &amp;#8220;Waiting for Review&amp;#8221;. It can often take up to 14 days before your app is in the App Store, so expect to wait for a bit.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Exporting for Android&lt;/h2&gt;
&lt;p&gt;Thankfully, after all the possible pain you might have gone through with the iOS export, Android is mildly easier. Assuming that you are using Eclipse for your Android development, all you need to do is remove any unused features from the manifest file and then right-click on the project and go down to &lt;code&gt;Android Tools =&gt; Export Signed Application Package&lt;/code&gt;. Once you have gone through the Wizard to export your package, you need to make sure you create a Keystore. You&amp;#8217;ll end up with an &lt;code&gt;.apk&lt;/code&gt; file, which is what we will upload to the Android market.&lt;/p&gt;
&lt;p&gt;Head over to the Android Market publisher&amp;#8217;s site &lt;a href="https://market.android.com/publish"&gt;here&lt;/a&gt; and sign in. If this is your first time here you will need to sign up for an account (using your existing Google account), pay $25, and setup a Google wallet account. Once signed up and logged in, you can go ahead and upload your &lt;code&gt;.apk&lt;/code&gt; file. It&amp;#8217;s a much more straightforward process than the iOS route. If you do feel that the form is overwhelming or you&amp;#8217;re not too sure about something, check out Shane Conder &amp;amp; Lauren Darcey&amp;#8217;s tutorial &lt;a href="http://mobile.tutsplus.com/tutorials/android/submitting-your-application-to-android-market/"&gt;here on mobiletuts&lt;/a&gt; as they go through it step-by-step. Their entire series on Android development is worth reading if you are at all interested in taking your development further!&lt;/p&gt;
&lt;p&gt;Once you&amp;#8217;re done, it takes no time at all before your app is on the market place and ready to be sold.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Exporting for Other Devices&lt;/h2&gt;
&lt;p&gt;As stated in the first tutorial of this series, we are going to take advantage of PhoenGap&amp;#8217;s cloud building system found at &lt;a href="http://build.phonegap.com"&gt;build.phonegap.com&lt;/a&gt;. In the long run, using this service does cost money, but the other option of running various different SDKs across various operating systems and then porting the app over each one might be more time consuming and hassle than the extra money it costs to use the service is worth.&lt;/p&gt;
&lt;p&gt;All we need is a &lt;code&gt;zip&lt;/code&gt; file containing our HTML, CSS, and JavaScript. Upload it to the service and you will then be taken to a &amp;#8220;Your Apps&amp;#8221; screen where you will see your app available in its various formats:&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/5/phonegap-fs-5-7.png" /&gt;
&lt;/div&gt;
&lt;p&gt;It&amp;#8217;s a simple click and download to get the right build. To get started for Blackberry, we need to submit our app to their &amp;#8220;App World&amp;#8221;. Head over to the App World &lt;a href="https://appworld.blackberry.com/isvportal"&gt;here&lt;/a&gt; and click &amp;#8220;Get Started&amp;#8221;. Fill in the pretty straightforward form and then wait. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Unfortunately, at the moment (2/8/2012), Blackberry apparently has a backlog of &amp;#8220;Vendor&amp;#8221; applications. I have been waiting since the beginning of January to be approved but have thus far had no such luck. They are currently running a Playbook promotion for those willing to convert their Android apps, which is causing the backlog. If you are at all interested in signing up to be a Blackberry Vendor, sign up ASAP.&lt;/p&gt;
&lt;p&gt;For the other devices supported by PhoneGap&amp;#8217;s cloud build service, it&amp;#8217;s worth signing up at their relevant development sites: &lt;a href="http://www.developer.nokia.com/"&gt;Nokia&lt;/a&gt; and &lt;a href="https://developer.palm.com/"&gt;webOS&lt;/a&gt;. They are very similar and full of documentation for uploading applications to their relevant markets. They follow the same sort of process (Sign Up, Upload App, Upload Marketing Materials, Wait) and are reasonably straightforward to follow.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We have now finished our app, exported it, and uploaded it to the iOS App Store as well as the Android market. We also used PhoneGap&amp;#8217;s build service to get a version of our app onto the other platforms we might want to support.&lt;/p&gt;
&lt;p&gt;Phonegap is going from strength-to-strength at the moment and continuing to grow (version 1.4 was just recently released). It&amp;#8217;s well worth getting to know this SDK if you are just starting out in mobile development and have no understanding of the native programming languages behind the Android or iOS platforms. Hopefully this tutorial series has shown you how to do just that!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/p8QXBlJeP-wdOcdxL9T1kr7mes8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/p8QXBlJeP-wdOcdxL9T1kr7mes8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/p8QXBlJeP-wdOcdxL9T1kr7mes8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/p8QXBlJeP-wdOcdxL9T1kr7mes8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
		<wfw:commentRss>http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch-camera-exporting/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<series:name><![CDATA[PhoneGap From Scratch]]></series:name>
	</item>
		<item>
		<title>Continuous Integration – Tuts+ Premium</title>
		<link>http://mobile.tutsplus.com/tutorials/iphone/continuous-integration-%e2%80%93-tuts-premium-5/</link>
		<comments>http://mobile.tutsplus.com/tutorials/iphone/continuous-integration-%e2%80%93-tuts-premium-5/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 04:22:59 +0000</pubDate>
		<dc:creator>Aron Bury</dc:creator>
				<category><![CDATA[iOS SDK]]></category>
		<category><![CDATA[Premium]]></category>
		<guid isPermaLink="false">http://mobile.tutsplus.com/?p=9507</guid>
		<description>&lt;p&gt;In this tutorial series we will explore a rarely discussed (but highly valuable) process of developing software that is disappointingly absent in the iOS and mobile world: Continuous Integration. Today&amp;#8217;s tutorial will teach you how to script your own Xcode builds!&lt;!--more--&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Tutorial Teaser&lt;/h2&gt;
&lt;h3&gt;Where We Left Off&lt;/h3&gt;
&lt;p&gt;In &lt;a href="http://tutsplus.com/tutorial/continuous-integration-series-introduction/"&gt;part 1&lt;/a&gt;, we discussed the concept of Continuous Integration and how it can assist us in developing software faster. &lt;a href="http://tutsplus.com/tutorial/continuous-integration-tomcat-setup/"&gt;Part 2&lt;/a&gt; went through installing Apache Tomcat, the web server that runs our CI server software. In &lt;a href="http://tutsplus.com/tutorial/continuous-integration-hudson-setup/"&gt;part 3&lt;/a&gt;, we installed and configured Hudson to monitor our project and begin the build process whenever we update our project repository. In &lt;a href="http://tutsplus.com/tutorial/continuous-integration-scripting-xcode-builds/"&gt;part 4&lt;/a&gt;, we wrote a basic build script that compiled our project and generated an IPA file.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Where To Go From Here?&lt;/h3&gt;
&lt;p&gt;Right now we&amp;#8217;ve got a functioning build script, but there is so much more we can do! This tutorial is a little different from the others. Instead of taking you through a series of steps, there will be a collection of helpful additions that you can add to your script and, depending on your circumstances, you can choose to add them or not.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Addition 1: Modify Your Script To Use Functions&lt;/h3&gt;
&lt;p&gt;Bash scripts can use functions just like other languages. Large build scripts can get pretty long, so it&amp;#8217;s important to organize it as much as possible. Functions are a great way of doing this.&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s put all of our existing code into a function called &amp;#8220;buildApp&amp;#8221;. Open your script and enter the following code:&lt;/p&gt;
&lt;pre class="brush: bash; title: ;"&gt;
function buildApp
{
	#existing code goes here
}
&lt;/pre&gt;
&lt;p&gt;To call our &amp;#8220;buildApp&amp;#8221; function, simply enter the following below the function declaration:&lt;/p&gt;
&lt;pre class="brush: bash; title: ;"&gt;
buildApp
&lt;/pre&gt;
&lt;p&gt;As you add more functionality to your script you can place them in differently named functions such as &amp;#8220;distributeApp&amp;#8221; or &amp;#8220;signApp&amp;#8221;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Get the Full Series!&lt;/h2&gt;
&lt;p&gt;This tutorial series is available to &lt;a href="http://tutsplus.com/"&gt;Tuts+ Premium members only&lt;/a&gt;. Read a &lt;a href="http://tutsplus.com/tutorial/continuous-integration-script-enhancements/"&gt;preview of this tutorial&lt;/a&gt; on the Tuts+ Premium web site or &lt;a href="http://tutsplus.com/amember/login.php"&gt;login&lt;/a&gt; to Tuts+ Premium to access the full content. &lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Joining Tuts+ Premium. . .&lt;/h2&gt;
&lt;p&gt;For those unfamiliar, the family of &lt;a href="http://tutsplus.com"&gt;Tuts+&lt;/a&gt; sites runs a premium membership service called Tuts+ Premium. For $19 per month, you gain access to exclusive premium tutorials, screencasts, and freebies from &lt;a href="http://mobile.tutsplus.com"&gt;Mobiletuts+&lt;/a&gt;, &lt;a href="http://net.tutsplus.com"&gt;Nettuts+&lt;/a&gt;, &lt;a href="http://ae.tutsplus.com"&gt;Aetuts+&lt;/a&gt;, &lt;a href="http://audio.tutsplus.com"&gt;Audiotuts+&lt;/a&gt;, &lt;a href="http://vector.tutsplus.com"&gt;Vectortuts+&lt;/a&gt;, and &lt;a href="http://cg.tutsplus.com"&gt;CgTuts+&lt;/a&gt;. You&amp;#8217;ll learn from some of the best minds in the business. &lt;a href="http://tutsplus.com/mobile-premium/"&gt;Become a premium member&lt;/a&gt; to access this tutorial, as well as hundreds of other advanced tutorials and screencasts.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1LsYZHTLDRAGfUhuoejEbc_0xq8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1LsYZHTLDRAGfUhuoejEbc_0xq8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1LsYZHTLDRAGfUhuoejEbc_0xq8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1LsYZHTLDRAGfUhuoejEbc_0xq8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
		<wfw:commentRss>http://mobile.tutsplus.com/tutorials/iphone/continuous-integration-%e2%80%93-tuts-premium-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Essentials: Publishing to Specific Devices</title>
		<link>http://mobile.tutsplus.com/tutorials/android/android-essentials-publishing-to-specific-devices/</link>
		<comments>http://mobile.tutsplus.com/tutorials/android/android-essentials-publishing-to-specific-devices/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 07:57:30 +0000</pubDate>
		<dc:creator>Shane Conder &amp; Lauren Darcey</dc:creator>
				<category><![CDATA[Android]]></category>
		<guid isPermaLink="false">http://mobile.tutsplus.com/?p=9486</guid>
		<description>&lt;div class="seriesmeta"&gt;This entry is part 13 of 13 in the series &lt;a href="http://mobile.tutsplus.com/series/android-essentials/" class="series-536" title="Android Essentials"&gt;Android Essentials&lt;/a&gt;&lt;/div&gt;&lt;p&gt;As the Android platform continues to grow and spread to new types of devices, it becomes more important for developers to keep track of where their applications are deployed. While market filters are available for developer configuration, sometimes the default filters don&amp;#8217;t go far enough. This tutorial will teach you to exclude specific devices manually!&lt;br /&gt;
&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;The Android Market allows developers to specifically exclude devices by name. These devices are organized by manufacturer.  You can only create a list of exclusions (a.k.a. a black list), not inclusions (a.k.a. a white list), although inclusions are feasible simply by blacklisting every device except the few you want to &amp;#8220;include&amp;#8221;. The exclusion feature is built more for the developer who runs into a device-specific problem and needs to exclude a device until they have a chance to fix the underlying problem. It is not currently a sophisticated publication rules engine. &lt;/p&gt;
&lt;p&gt;Note: The Android Market manual exclusion list only controls how the Android Market lists your applications for users to download. No actual changes are made to the application package itself. Your app can still be installed on &amp;#8220;excluded&amp;#8221; devices without issue if the user were to find the package through other means, unlike some of the Android manifest file features which the Android platform actually checks for and enforces.&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Step 0: &lt;/span&gt; Reasons to Exclude Devices&lt;/h2&gt;
&lt;p&gt;Before you go configuring your application listing on the Android Market from excluding specific devices, give some thought as to why you are doing so. Under normal circumstances, you should be able to solve any incompatibility issues using the market filters built into the platform. For example, you should be setting the Android Manifest file settings to filter your application in terms of appropriate API Levels and other flags. Some reasons you might want to use the manual exclusion feature of the Android Market include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Excluding a problematic device, such as one that routinely has caused your application to have bad ratings (until you can fix the problem).&lt;/li&gt;
&lt;li&gt;Excluding a class of devices with specific form factors, features, or configurations not supported with Android manifest file settings (like excluding all tablets).&lt;/li&gt;
&lt;li&gt;Excluding all devices from a specific manufacturer for contractual reasons.&lt;/li&gt;
&lt;li&gt;Forcing your application to be published only on a very specific subset of devices (and no others), likely for business reasons.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first option is the only real technical reason this would be needed. It&amp;#8217;s a good option if you need to quickly disable access by certain devices while you come up with a fix or workaround to the issue.&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Step 1: &lt;/span&gt; Login to Your Market Account&lt;/h2&gt;
&lt;p&gt;You must have a valid Android Market account and an application ready to publish or already published to manage an exclusion list. Each application can have its own exclusion list that is managed separately; they may not be combined at this time. We will assume your application is already uploaded to the Android Market.&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Step 2: &lt;/span&gt; Select the Application to Manage&lt;/h2&gt;
&lt;p&gt;On your Android Market Developer dashboard, you should see all Android Market listings when you login to your account. Choose the application you want to manage by clicking on its name. This will bring you to the Product details tab of your application&amp;#8217;s profile, where you can upload screenshots and other information for the application&amp;#8217;s market listing.  The compatible devices are based on the latest APK file, so make sure this file is up to date before you configure any specific publication options. &lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Step 3: &lt;/span&gt; Configure the Publishing Options&lt;/h2&gt;
&lt;p&gt;Scroll down the Product details tab to the Publishing Options section. At the very bottom of this section, there is a configuration option called Supported Devices. By default, this section will show the number of devices that match the configuration defined by your application&amp;#8217;s Android manifest file. For example, this section might look like Figure 1. &lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/Android-SDK_Publish-to-Specific-Devices/Android-SDK_Publish_Market_Fig1.png" alt="Default – Supporting All Devices that Match Your Android Manifest File Settings" /&gt;
&lt;/div&gt;
&lt;h2&gt;&lt;span&gt;Step 4: &lt;/span&gt; Excluding Specific Devices&lt;/h2&gt;
&lt;p&gt;To exclude specific devices, click on the Show devices link next to the sentence that states how many devices your application is available to. This launches the Device Availability dialog, which lists all the devices that the Android Market will currently publishes your application to.  By default, this list is organized by manufacturer. So, for example, I could decide I didn&amp;#8217;t want my app on my Asus Transformer Prime by selecting it from the list of available devices, as shown in Figure 2.  &lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/Android-SDK_Publish-to-Specific-Devices/Android-SDK_Publish_Market_Fig2.png" alt="Manually Excluding the Asus Transformer Prime" /&gt;
&lt;/div&gt;
&lt;p&gt;If Asus decided to ship a new version of the Asus Transformer Prime, like an Asus Prime II: Deceptipad (see what we did there?) or something, your application would automatically include it until you came in and excluded it manually (assuming it was compatible with the Android manifest file settings). New devices are added on a regular basis, usually within two weeks of release. &lt;/p&gt;
&lt;p&gt;Once you return to the Publishing Options, you will see that it indicates that you are manually excluding devices, as shown in Figure 3 below:&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/Android-SDK_Publish-to-Specific-Devices/Android-SDK_Publish_Market_Fig3.png" alt="Manually Excluding a Device" /&gt;
&lt;/div&gt;
&lt;h2&gt;&lt;span&gt;Step 5: &lt;/span&gt; Searching for Devices&lt;/h2&gt;
&lt;p&gt;You can use the Device Availability dialog to search for specific devices by manufacturer, name, or device brand name. &lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The Android Market development team is constantly improving the developer dashboard for application management. Normally, developers should simply configure the proper Android manifest file settings in order to ensure their applications are published to compatible devices. However, there are some valid reasons why a developer might want to &amp;#8220;blacklist&amp;#8221; or exclude specific devices when they publish an application. This feature is available in the Android Market developer dashboard, where the developer can manually exclude specific devices. &lt;/p&gt;
&lt;p&gt;Do you blacklist any devices for technical reasons? If so, which ones and why?&lt;/p&gt;
&lt;h3&gt;About the Authors&lt;/h3&gt;
&lt;p&gt;Mobile developers Lauren Darcey and Shane Conder have coauthored several books on Android development: an in-depth programming book entitled &lt;em&gt;&lt;a href="http://www.amazon.com/dp/0321743016/?tag=mamlambo-20"&gt;Android Wireless Application Development, Second Edition&lt;/a&gt;&lt;/em&gt; and &lt;em&gt;&lt;a href="http://www.amazon.com/dp/0672335697/?tag=mamlambo-20"&gt;Sams Teach Yourself Android Application Development in 24 Hours, Second Edition&lt;/a&gt;&lt;/em&gt;. When not writing, they spend their time developing mobile software at their company and providing consulting services. They can be reached at via email to &lt;a href="mailto:androidwirelessdev+mt@gmail.com"&gt;androidwirelessdev+mt@gmail.com&lt;/a&gt;, via their blog at &lt;a href="http://androidbook.blogspot.com"&gt;androidbook.blogspot.com&lt;/a&gt;, and on Twitter &lt;a href="http://twitter.com/androidwireless"&gt;@androidwireless&lt;/a&gt;.&lt;br /&gt;
&lt;h3&gt;Need More Help Writing Android Apps? Check out our Latest Books and Resources!&lt;/h3&gt;
&lt;p&gt; &lt;a href="http://www.amazon.com/dp/0321743016/?tag=mamlambo-20"&gt; &lt;img src="http://mamlambo.com/himg/awad.jpg" alt="Buy Android Wireless Application Development, 2nd Edition" style="border: medium none ! important;margin: 0px ! important"&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://www.amazon.com/dp/0672335697/?tag=mamlambo-20"&gt;&lt;img src="http://mamlambo.com/himg/sams-aad.jpg" alt="Buy Sam's Teach Yourself Android Application Development in 24 Hours, Second Edition" style="border: medium none ! important;margin: 0px ! important"&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://codecanyon.net/user/Mamlambo/portfolio"&gt; &lt;img src="http://mamlambo.com/himg/CCad.png" alt="Mamlambo code at Code Canyon" style="border: medium none ! important;margin: 0px ! important" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9cVgI3r83Ja86jiv80Nc-NScPPk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9cVgI3r83Ja86jiv80Nc-NScPPk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9cVgI3r83Ja86jiv80Nc-NScPPk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9cVgI3r83Ja86jiv80Nc-NScPPk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
		<wfw:commentRss>http://mobile.tutsplus.com/tutorials/android/android-essentials-publishing-to-specific-devices/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<series:name><![CDATA[Android Essentials]]></series:name>
	</item>
		<item>
		<title>Best of Tuts+ in January 2012</title>
		<link>http://mobile.tutsplus.com/articles/news/best-of-tuts-in-january-2012/</link>
		<comments>http://mobile.tutsplus.com/articles/news/best-of-tuts-in-january-2012/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 15:06:27 +0000</pubDate>
		<dc:creator>David Appleyard</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[bestof]]></category>
		<category><![CDATA[monthlypicks]]></category>
		<guid isPermaLink="false">http://mobile.tutsplus.com/?p=9469</guid>
		<description>&lt;p&gt;Each month, we bring together a selection of the best tutorials and articles from across the whole &lt;a href="http://tutsplus.com/"&gt;Tuts+ network&lt;/a&gt;. Whether you&amp;#8217;d like to read the top posts from your favourite site, or would like to start learning something completely new, this is the best place to start!&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Psdtuts+ — Photoshop Tutorials&lt;/h2&gt;
&lt;ul class="webroundup"&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
			&lt;img src="http://d2f8dzk2mhcqts.cloudfront.net/0808_Truck/preview.jpg" alt="Create a Pimped Out Truck Using Photoshop and Point and Shoot Photos" width="200" height="200" /&gt;
		&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://psd.tutsplus.com/tutorials/photo-effects-tutorials/pimped-out-truck/'&gt;Create a Pimped Out Truck Using Photoshop and Point and Shoot Photos&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Making modifications to your car or truck in Photoshop can be a lot of fun. In this tutorial we will demonstrate how to create a pimped out truck modification using photos taken with a simple point and shoot camera, with no advanced lighting setup. Let&amp;#8217;s get started!&lt;/p&gt;
&lt;p&gt;&lt;a href='http://psd.tutsplus.com/tutorials/photo-effects-tutorials/pimped-out-truck/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
			&lt;img src="http://d2f8dzk2mhcqts.cloudfront.net/0806_Elephant/preview.jpg" alt="Create an Elephant Sundae Using Photo Manipulation Techniques" width="200" height="200" /&gt;
		&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://psd.tutsplus.com/tutorials/photo-effects-tutorials/elephant-sundae/'&gt;Create an Elephant Sundae Using Photo Manipulation Techniques&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Photoshop is great at seamlessly combing photos to create an entirely new scene. In this tutorial we will create an elephant sundae using several stock photos. Let&amp;#8217;s get started!&lt;/p&gt;
&lt;p&gt;&lt;a href='http://psd.tutsplus.com/tutorials/photo-effects-tutorials/elephant-sundae/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
			&lt;img src="http://d2f8dzk2mhcqts.cloudfront.net/0818_Michaelo/preview.jpg" alt="The Incredible Digital Art of Michael Oswald" width="200" height="200" /&gt;
		&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://psd.tutsplus.com/articles/inspiration/michael-oswald/'&gt;The Incredible Digital Art of Michael Oswald&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In this article we will be featuring the work of &lt;a href="http://www.bymichaelo.com/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','www.bymichaelo.com']);"&gt;Michael Oswald&lt;/a&gt;. Oswald is a digital artist with a unique style. His technique involves a combination of photo manipulation and digital painting techniques and the results are often stunning. Let&amp;#8217;s take a look!&lt;/p&gt;
&lt;p&gt;&lt;a href='http://psd.tutsplus.com/articles/inspiration/michael-oswald/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;hr /&gt;
&lt;h2&gt;Nettuts+ — Web Development Tutorials&lt;/h2&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2o0t5hpnwv4c1.cloudfront.net/1038_sublime/sublime-text-2-tips-and-tricks.jpg" alt="Sublime Text 2 Tips and Tricks (Updated)" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://net.tutsplus.com/tutorials/tools-and-tips/sublime-text-2-tips-and-tricks/'&gt;Sublime Text 2 Tips and Tricks (Updated)&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://www.sublimetext.com/dev" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','www.sublimetext.com']);"&gt;Sublime Text 2&lt;/a&gt; is one of the fastest and most incredible code editors to be released in a long time! With a community and plugin ecosystem as passionate as this one, it just might be impossible for any other editor to catch up. I&amp;#8217;ll show you my favorite tips and tricks today. &lt;/p&gt;
&lt;p&gt;&lt;a href='http://net.tutsplus.com/tutorials/tools-and-tips/sublime-text-2-tips-and-tricks/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2o0t5hpnwv4c1.cloudfront.net/1119_html5/html5-media-and-accessibility.jpg" alt="An In Depth Analysis of HTML5 Multimedia and Accessibility" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://net.tutsplus.com/tutorials/html-css-techniques/an-in-depth-overview-of-html5-multimedia-and-accessibility/'&gt;An In Depth Analysis of HTML5 Multimedia and Accessibility&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In this tutorial, youll learn how HTML5 helps to provide you with several ways of presenting your media content to users. As a result, youll increase the availability of your media to users with different&lt;br /&gt;
needs and requirements, making it more accessible.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://net.tutsplus.com/tutorials/html-css-techniques/an-in-depth-overview-of-html5-multimedia-and-accessibility/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2o0t5hpnwv4c1.cloudfront.net/1129_api_wrapper_tdd/api-wrapper-for-dribbble.png" alt="Writing an API Wrapper in Ruby with TDD" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://net.tutsplus.com/tutorials/ruby/writing-an-api-wrapper-in-ruby-with-tdd/'&gt;Writing an API Wrapper in Ruby with TDD&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Sooner or later, all developers are required to interact with an API. The most difficult part is always related to reliably testing the code we write, and, as we want to make sure that everything works properly, we continuosly run code that queries the API itself. This process is slow and inefficient, as we can experience network issues and data inconsistencies (the API results may change). Let&amp;#8217;s review how we can avoid all of this effort with Ruby.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://net.tutsplus.com/tutorials/ruby/writing-an-api-wrapper-in-ruby-with-tdd/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;hr /&gt;
&lt;h2&gt;Vectortuts+ — Illustrator Tutorials&lt;/h2&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://dsmy2muqb7t4m.cloudfront.net/tuts/000-2012/477-microscope/preview.jpg" alt="How to Illustrate a Microscope in Illustrator" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://vector.tutsplus.com/tutorials/illustration/illustrate-a-microscope/'&gt;How to Illustrate a Microscope in Illustrator&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The microscopes is a symbol of our civilization. Throughout this tutorial on how to illustrate a vector microscope you&amp;#8217;ll take advantage of numerous Illustrator tools. You will learn how to use blends, art brushes and 3D rendering in Adobe Illustrator. Let&amp;#8217;s get started!&lt;/p&gt;
&lt;p&gt;&lt;a href='http://vector.tutsplus.com/tutorials/illustration/illustrate-a-microscope/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://dsmy2muqb7t4m.cloudfront.net/tuts/000-2012/471-gallery/preview.jpg" alt="Create a Picture Gallery in Illustrator" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://vector.tutsplus.com/tutorials/illustration/create-a-picture-gallery/'&gt;Create a Picture Gallery in Illustrator&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;This work is a common project created together with &lt;a href="http://vector.tutsplus.com/author/iaroslav-lazunov/" &gt;Iaroslav Lazunov&lt;/a&gt; and &lt;a href="http://vector.tutsplus.com/author/alexander-egupov/" &gt;Alexander Egupov&lt;/a&gt;. We have used 3D rendering, Blends, Opacity masks, making this three-dimensional stage with vanishing points. Learn every step in how to create this picture gallery work.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://vector.tutsplus.com/tutorials/illustration/create-a-picture-gallery/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://dsmy2muqb7t4m.cloudfront.net/articles/2012/article-tutorials-typeface-font-design/preview.jpg" alt="13 Important Resources for Learning How to Design Typefaces and Full Fonts" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://vector.tutsplus.com/articles/web-roundups/how-to-design-typefaces-fonts/'&gt;Important Resources for Learning How to Design Typefaces and Full Fonts&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;If you&amp;#8217;re serious about creating a typeface design, then you&amp;#8217;ll need some solid resources to get started. Learn effective typeface design workflows, how to take an initial spark of an idea from sketch, through Illustrator, into Fontlab, and then work your creation into a complete and custom font design. Here are multiple tutorials that show you how to create fonts in Illustrator and Fontlab, and you can also dive into articles that describe the foundation of quality type design with ample inspirational examples.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://vector.tutsplus.com/articles/web-roundups/how-to-design-typefaces-fonts/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;hr /&gt;
&lt;h2&gt;Webdesigntuts+ — Web Design Tutorials&lt;/h2&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d3pr5r64n04s3o.cloudfront.net/articles/062_pairing_fonts/preview.png" alt="A Beginner&amp;#8217;s Guide to Pairing Fonts" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://webdesign.tutsplus.com/articles/typography-articles/a-beginners-guide-to-pairing-fonts/'&gt;A Beginner&amp;#8217;s Guide to Pairing Fonts&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Pairing fonts can be a challenge. Selecting two or more fonts which work well is one thing &amp;#8211; selecting two which work &lt;em&gt;together&lt;/em&gt; to achieve your typographic aims may have you reaching for the aspirin. Let&amp;#8217;s see if we can alleviate any headaches. This guide will help you get started with font pairing for the web.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://webdesign.tutsplus.com/articles/typography-articles/a-beginners-guide-to-pairing-fonts/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d3pr5r64n04s3o.cloudfront.net/tuts/235_banner_ads/preview.png" alt="Design a Series of Smart Banner Ads in Photoshop" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://webdesign.tutsplus.com/tutorials/visuals/design-a-series-of-smart-banner-ads-in-photoshop/'&gt;Design a Series of Smart Banner Ads in Photoshop&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;With the continuous growth of the Internet, online marketing has gotten bigger every year, and along with it, the advertising industry. One major factor in all this craziness is buying and selling ads. &lt;/p&gt;
&lt;p&gt;&lt;a href='http://webdesign.tutsplus.com/tutorials/visuals/design-a-series-of-smart-banner-ads-in-photoshop/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="https://d3pr5r64n04s3o.cloudfront.net/tuts/231_twitter_bootstrap_101/bootstrap.png" alt="Twitter Bootstrap 101: Introduction" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://webdesign.tutsplus.com/tutorials/complete-websites/twitter-bootstrap-101-introduction/'&gt;Twitter Bootstrap 101: Introduction&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Twitter&amp;#8217;s Bootstrap is an excellent set of carefully crafted user interface elements, layouts, and javascript tools, freely available to use in your next web design project. This video series aims to introduce you to Bootstrap; taking you all the way from downloading the resources, to building a complete Bootstrap-based website.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://webdesign.tutsplus.com/tutorials/complete-websites/twitter-bootstrap-101-introduction/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;hr /&gt;
&lt;h2&gt;Phototuts+ — Photography Tutorials&lt;/h2&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2f29brjr0xbt3.cloudfront.net/805_hdrtakeleave/preview.jpg" alt="HDR: Love it or Leave It?" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://photo.tutsplus.com/articles/post-processing-articles/hdr-love-it-or-leave-it/'&gt;HDR: Love it or Leave It?&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;There are few techniques in the photography world that divide our community as much as HDR. High dynamic range images, or HDR images, are a special type of composite image that combines several images at different exposure settings in order to create an image with increased dynamic range. The look provided by HDR is loved by many, and disliked by perhaps just as many. In today&amp;#8217;s article, we&amp;#8217;re going to take a better look at what HDR is, and get some opinions from photographers using HDR.&lt;span id="more-8505"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://photo.tutsplus.com/articles/post-processing-articles/hdr-love-it-or-leave-it/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2f29brjr0xbt3.cloudfront.net/807_motorsportRU/preview.jpg" alt="50 Inspiring Images of Cars and Motorcycles" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://photo.tutsplus.com/articles/inspiration/50-inspiring-images-of-cars-and-motorcycles/'&gt;Inspiring Images of Cars and Motorcycles&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Cars and motorbikes have been around for 100 years. Throughout the century, they have looked beautiful, satisfied our need for speed and become a symbol for thrill seeking. Today, we&amp;#8217;ll look at photos ranging from brand new Ferrari&amp;#8217;s to classic muscle cars.&lt;span id="more-8519"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://photo.tutsplus.com/articles/inspiration/50-inspiring-images-of-cars-and-motorcycles/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2f29brjr0xbt3.cloudfront.net/822_gimpQT/preview.jpg" alt="Quick Tip: GIMP Portable &amp;#8211; Take Your Editing Software With You" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://photo.tutsplus.com/articles/post-processing-articles/quick-tip-gimp-portable-take-your-editing-software-with-you/'&gt;Quick Tip: GIMP Portable &amp;#8211; Take Your Editing Software With You&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;While a number of smartphones now offer photo editing basics (and a plethora of apps to expand things even more), the portability of a solid photo editing program has been hard to come by. Photoshop is a monster in regards to space requirements and its ability to work on any system where it is not expressively installed. Picasa can be fairly &amp;#8216;lightweight&amp;#8217; but lacks many of the more advanced photo editing tools. So what about GIMP?&lt;span id="more-8627"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://photo.tutsplus.com/articles/post-processing-articles/quick-tip-gimp-portable-take-your-editing-software-with-you/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;hr /&gt;
&lt;h2&gt;Cgtuts+ — Computer Graphics Tutorials&lt;/h2&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2d04grx5ahzvh.cloudfront.net/336_Blender_TRex_Modeling/Thumb.png" alt="Modeling, UVmapping And Texturing A Low Poly T-Rex In Blender, Part 1" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://cg.tutsplus.com/tutorials/blender/modeling-uvmapping-and-texturing-a-low-poly-t-rex-in-blender-part-1/'&gt;Modeling, UVmapping And Texturing A Low Poly T-Rex In Blender, Part 1&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In the first tutorial of 2012 you’ll learn how to create an awesome low-poly dinosaur using Blender and Gimp. In today’s post artist Karan Shah will walk you through the entire modeling process step by step, and show you how to create an optimized model suitable for use in any game engine.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://cg.tutsplus.com/tutorials/blender/modeling-uvmapping-and-texturing-a-low-poly-t-rex-in-blender-part-1/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2d04grx5ahzvh.cloudfront.net/337_Maya_Fluids_Explosion/Thumb.jpg" alt="Create A Realistic Explosion In Maya Using Maya Fluids" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://cg.tutsplus.com/tutorials/autodesk-maya/create-a-realistic-explosion-in-maya-using-maya-fluids/'&gt;Create A Realistic Explosion In Maya Using Maya Fluids&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Today you’ll learn to animate and shade fluids, understand all of the major attributes, learn how adding fields will allow you to gain better control over your simulation, and how to light and render the final animation.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://cg.tutsplus.com/tutorials/autodesk-maya/create-a-realistic-explosion-in-maya-using-maya-fluids/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2d04grx5ahzvh.cloudfront.net/339_UDK_Speedtree_Part_1/Thumb.jpg" alt="SpeedTree To UDK: The Complete Workflow, Part 1 Creating The Tree" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://cg.tutsplus.com/tutorials/game-dev/speedtree-to-udk-the-complete-workflow-part-1/'&gt;SpeedTree To UDK: The Complete Workflow, Part 1 Creating The Tree&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Due to the shear number of polygons often required to make believable 3D trees, creating realistic ones for use &amp;#8220;in-game&amp;#8221; can be a challenging, time consuming task. SpeedTree from IDV aims to change all that with it&amp;#8217;s intuitive UI, ease of use and powerful toolset. Making believable trees and plants has literally never been easier!&lt;/p&gt;
&lt;p&gt;&lt;a href='http://cg.tutsplus.com/tutorials/game-dev/speedtree-to-udk-the-complete-workflow-part-1/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;hr /&gt;
&lt;h2&gt;Aetuts+ — After Effects Tutorials&lt;/h2&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d3gphd0pfuxn95.cloudfront.net/694_dominoes/dominoes_thumbnail.jpg" alt="&amp;#8220;Dominoes&amp;#8221; CameraTracker and Cinema 4d Case Study &amp;#8211; Day 1" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://ae.tutsplus.com/tutorials/workflow/dominoes-cameratracker-and-cinema-4d-case-study-day-1/'&gt;Dominoes&amp;#8221; CameraTracker and Cinema 4d Case Study &amp;#8211; Day 1&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In this tutorial we&amp;#8217;re going to go over the principle functionality of &lt;a href="http://www.thefoundry.co.uk/products/cameratracker/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','www.thefoundry.co.uk']);"&gt;CameraTracker&lt;/a&gt; from The Foundry, learning basic workflow, optimizing results, aligning the ground plane and exporting this data from After Effects to &lt;a href="http://www.maxon.net/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','www.maxon.net']);" rel="external"&gt;Cinema 4d&lt;/a&gt;.&lt;span id="more-18522"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://ae.tutsplus.com/tutorials/workflow/dominoes-cameratracker-and-cinema-4d-case-study-day-1/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://tutsplus.s3.amazonaws.com/tutspremium/after-effects/59_flame_react/Flame_Reactant_Thumbnail.jpg" alt="Make An Amazing Motion Reactant Flame &amp;#8211; Tuts+ Premium" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://ae.tutsplus.com/tutorials/vfx/make-an-amazing-motion-reactant-flame-tutsplus-premium/'&gt;Make An Amazing Motion Reactant Flame &amp;#8211; Tuts+ Premium&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Using just a few video elements of torch flames, we composite a burning hand by using a series of null objects and expressions to drive a &lt;strong&gt;time lagged displacement effect&lt;/strong&gt; to simulate fire burning from a moving source. We use the Puppet tool for the distortion and throw on some tracked lighting effects and a displacement map for the Heat. This principle can be used to &lt;strong&gt;add realistic, fluid motion to any tracked object&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://ae.tutsplus.com/tutorials/vfx/make-an-amazing-motion-reactant-flame-tutsplus-premium/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d3gphd0pfuxn95.cloudfront.net/misc/freelancer.jpg" alt="10 Key Tips To Becoming A Successful Video Freelancer" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://ae.tutsplus.com/articles/in-depth/10-key-tips-to-becoming-a-successful-video-freelancer/'&gt;Key Tips To Becoming A Successful Video Freelancer&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Youve watched thousands of tutorials. Youve put in countless hours and spent many late nights working on personal projects. Youve finally come to the conclusion that this may just be something you would like to do for a career. It can seem a little intimidating at first, because how are you going to convince someone to pay you to do this? Up until now youve been your only client. How do you get more?  Im going to share my insight and experiences on how to successfully launch your freelance career this year!&lt;/p&gt;
&lt;p&gt;&lt;a href='http://ae.tutsplus.com/articles/in-depth/10-key-tips-to-becoming-a-successful-video-freelancer/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;hr /&gt;
&lt;h2&gt;Audiotuts+ — Audio &amp;#038; Production Tutorials&lt;/h2&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d3vvl31cy8gagb.cloudfront.net/713_8free/Preview Image.jpg" alt="8 Free Professional Quality Audio Unit Plug-ins for Mac" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://audio.tutsplus.com/articles/general/8-free-professional-quality-audio-unit-plug-ins-for-mac/'&gt;Free Professional Quality Audio Unit Plug-ins for Mac&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Lets face it, software is expensive. While there are hundreds of free plug-ins available online, more often than not two problems will arise: One, most of them are for PCs leaving us Mac users feeling left out. Two, most of them are vary poor quality.&lt;/p&gt;
&lt;p&gt;While I do agree with the saying, &amp;#8220;The tools are only as good as the artist,&amp;#8221; I also believe the opposite is true; that at some point the artist can only be as good as his tools are.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://audio.tutsplus.com/articles/general/8-free-professional-quality-audio-unit-plug-ins-for-mac/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d3vvl31cy8gagb.cloudfront.net/qt_168_drums4/Thumbnail.jpg" alt="Quick Tip: Drum Processing Part 4: Tips and Tricks" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://audio.tutsplus.com/tutorials/production/quick-tip-drum-processing-part-4-tips-and-tricks/'&gt;Quick Tip: Drum Processing Part 4: Tips and Tricks&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;This short series of quick tips is designed to give you a good overview of the audio processing techniques involved in creating a professional sounding drum beat for use in house, electro and breaks in Cubase. In this final part we will look at a few ways to add even more life to your drums.&lt;br /&gt;
&lt;span id="more-13319"&gt;&lt;/span&gt;&lt;br /&gt;
Here is a sample of the type of beat you could expect to end up with at the end of this series of tips:&lt;/p&gt;
&lt;p&gt;&lt;a href='http://audio.tutsplus.com/tutorials/production/quick-tip-drum-processing-part-4-tips-and-tricks/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d3vvl31cy8gagb.cloudfront.net/qt_164_math/preview.jpg" alt="Quick Tip: Use the Doubling Technique for Quick Drums" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://audio.tutsplus.com/tutorials/production/quick-tip-use-the-doubling-technique-for-quick-drums/'&gt;Quick Tip: Use the Doubling Technique for Quick Drums&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;It&amp;#8217;s 3:30 in the afternoon when your phone rings. The head of a music library is calling and she needs your help. They have a commercial for an A-list client that needs music, and they want you to submit an entry. You&amp;#8217;ll get $10,000 if you land the gig.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://audio.tutsplus.com/tutorials/production/quick-tip-use-the-doubling-technique-for-quick-drums/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;hr /&gt;
&lt;h2&gt;Activetuts+ — Flash, Flex &amp;#038; ActionScript Tutorials&lt;/h2&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2fhka9tf2vaj2.cloudfront.net/tuts/394_microphoneGameCode/preview.jpg" alt="Create a Microphone-Controlled Flash Game: Code" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://active.tutsplus.com/tutorials/games/create-a-microphone-controlled-flash-game-code/'&gt;Create a Microphone-Controlled Flash Game: Code&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In this mini-series, we&amp;#8217;re creating a spaceship game where the main control is via the microphone: shout louder to make the ship fly higher. &lt;a href="http://active.tutsplus.com/tutorials/games/create-a-microphone-controlled-flash-game-design/" &gt;So far&lt;/a&gt;, we&amp;#8217;ve created all the required graphical elements for the game. Now, it&amp;#8217;s time to work on our code. We&amp;#8217;ve got a lot to do, so let&amp;#8217;s get started!&lt;span id="more-10562"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://active.tutsplus.com/tutorials/games/create-a-microphone-controlled-flash-game-code/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2fhka9tf2vaj2.cloudfront.net/articles/084_whyBotherWithjQuery/why_bother_with_jquery.png" alt="Why Bother With jQuery? A Guide for (Former) Flash Developers" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://active.tutsplus.com/articles/explanatory/why-bother-with-jquery-a-guide-for-former-flash-developers/'&gt;Why Bother With jQuery? A Guide for (Former) Flash Developers&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;If you, like many Flash developers, are looking into using HTML5 for your web apps, you&amp;#8217;ll almost certainly have come across jQuery. It&amp;#8217;s a very popular JavaScript library, used by &lt;a href="http://trends.builtwith.com/javascript/JQuery" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','trends.builtwith.com']);" rel="external"&gt;a large percentage&lt;/a&gt; of the most visited websites &amp;#8211; but what&amp;#8217;s all the fuss about, and should you use it?&lt;span id="more-10723"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://active.tutsplus.com/articles/explanatory/why-bother-with-jquery-a-guide-for-former-flash-developers/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d2fhka9tf2vaj2.cloudfront.net/tuts/398_gamepadAPIIntro/gamepadAPI-preview.jpg" alt="An Introduction to the HTML5 Gamepad API" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://active.tutsplus.com/tutorials/games/an-introduction-to-the-html5-gamepad-api/'&gt;An Introduction to the HTML5 Gamepad API&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;As HTML games begin to gradually increase in popularity, vendors are starting to introduce some exciting new APIs to make gaming that little bit sweeter for both us developers and our end players. One of these is the GamepadAPI, which allows you to connect your good old console gamepad into your computer and use it for browser based games, plug and play style. Let&amp;#8217;s dive in!&lt;span id="more-10686"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://active.tutsplus.com/tutorials/games/an-introduction-to-the-html5-gamepad-api/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;hr /&gt;
&lt;h2&gt;Wptuts+ — WordPress Tutorials&lt;/h2&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://wptutsplus.s3.amazonaws.com/159_RiseHTML5/html5.jpg" alt="The Rise of HTML5 in WordPress" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://wp.tutsplus.com/articles/the-rise-of-html5-in-wordpress/'&gt;The Rise of HTML5 in WordPress&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;2011 was a big year for the advancement of HTML5 in the web development community. It became pretty widely adopted, especially for the mobile web. There have been major projects that help developers use HTML5, like Paul Irish&amp;#8217;s &lt;a href="http://html5boilerplate.com/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','html5boilerplate.com']);"&gt;HTML5 Boilerplate&lt;/a&gt; (technically 2010, but popularized in 2011) and books galore!&lt;/p&gt;
&lt;p&gt;&lt;a href='http://wp.tutsplus.com/articles/the-rise-of-html5-in-wordpress/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://wptutsplus.s3.amazonaws.com/131_MetaBoxPt1/metabox_0.jpg" alt="Reusable Custom Meta Boxes Part 3: Extra Fields" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part-3-extra-fields/'&gt;Reusable Custom Meta Boxes Part 3: Extra Fields&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In &lt;a href="http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part-1-intro-and-basic-fields/" &gt;Part 1&lt;/a&gt; and &lt;a href="http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part-2-advanced-fields/" &gt;Part 2&lt;/a&gt; of our custom meta box template tutorial series, we learned how to create a field array to loop through and create a custom meta box with your standard fields. Now let&amp;#8217;s throw in a bit of JavaScript for some fancy, but highly useful fields.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part-3-extra-fields/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://wptutsplus.s3.amazonaws.com/167_ySlowTut/img/uwo.png" alt="The Ultimate Quickstart Guide to Speeding Up Your WordPress Site" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://wp.tutsplus.com/tutorials/the-ultimate-quickstart-guide-to-speeding-up-your-wordpress-site/'&gt;The Ultimate Quickstart Guide to Speeding Up Your WordPress Site&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Give your site a boost! Implement crucial optimization techniques that will improve not only your &lt;strong&gt;&lt;a href="http://developer.yahoo.com/yslow/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','developer.yahoo.com']);"&gt;ySlow &lt;/a&gt;&lt;/strong&gt;score, but your Google rank too. In this tutorial we will cover all aspects of W3 caching, ySlow, Google page speed, CSS sprites &amp;#038; htaccess rules, to achieve a high ySlow score like i have done on &lt;a href="http://imattic.com/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','imattic.com']);"&gt;my blog.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://wp.tutsplus.com/tutorials/the-ultimate-quickstart-guide-to-speeding-up-your-wordpress-site/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;hr /&gt;
&lt;h2&gt;Mobiletuts+ — Mobile Development Tutorials&lt;/h2&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d339vfjsz5zott.cloudfront.net/iOS-SDK_Creating-A-Carousel/carousel.jpg" alt="iOS SDK: Creating an Awesome Carousel" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-creating-an-awesome-carousel/'&gt;iOS SDK: Creating an Awesome Carousel&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Engage your users with stunning carousels.  We&amp;#8217;ll look at how easy and clean it can be to implement scrollable, interactive carousels in your iOS applications.  With high configurability, you can have 3D, flat, rotating, and endless scrolling arrays for data, images, or buttons.&lt;br /&gt;
&lt;span id="more-9302"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-creating-an-awesome-carousel/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/phonegap.jpg" alt="PhoneGap From Scratch: Introduction" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch/'&gt;PhoneGap From Scratch: Introduction&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Want to learn how to use PhoneGap, but don&amp;#8217;t know where to get started? Join us as we put together &amp;#8220;Sculder&amp;#8221;, not only a tribute to an excellent science fiction TV series, but a fully-fledged native mobile application for the believer in you!&lt;/p&gt;
&lt;p&gt;&lt;a href='http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch/'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li class='clear'&gt;
&lt;div&gt;
		&lt;img src="http://d339vfjsz5zott.cloudfront.net/Mobile-Flash-Is-Far-From-Dead/mobile-flash.png" alt="Mobile Flash is Far From Dead: Setting the Record Straight" width="200" height="200" /&gt;
	&lt;/div&gt;
&lt;h4&gt;&lt;a href='http://mobile.tutsplus.com/?p=9436'&gt;Mobile Flash is Far From Dead: Setting the Record Straight&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In light of recent announcements from Adobe, there has been a lot of confusion over the state of the Flash Platform &amp;#8211; specifically in regard to Flash content on mobile devices. This article seeks to clarify many of the misconceptions that exist by addressing the main points of confusion around these announcements regardless of the initial, monumental, and absolutely unbelievable blunders from failed public (and private) relations messaging and general marketing surrounding these announcements.&lt;span id="more-9436"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://mobile.tutsplus.com/?p=9436'&gt;Visit Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2fZaPIK0mlSKjo1sFTuENRhbEDc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2fZaPIK0mlSKjo1sFTuENRhbEDc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2fZaPIK0mlSKjo1sFTuENRhbEDc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2fZaPIK0mlSKjo1sFTuENRhbEDc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
		<wfw:commentRss>http://mobile.tutsplus.com/articles/news/best-of-tuts-in-january-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PhoneGap From Scratch: Twitter &amp; Maps</title>
		<link>http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch-twitter-maps/</link>
		<comments>http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch-twitter-maps/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 14:22:15 +0000</pubDate>
		<dc:creator>Shaun Dunne</dc:creator>
				<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<guid isPermaLink="false">http://mobile.tutsplus.com/?p=9462</guid>
		<description>&lt;div class="seriesmeta"&gt;This entry is part 4 of 5 in the series &lt;a href="http://mobile.tutsplus.com/series/phonegap-from-scratch/" class="series-763" title="PhoneGap From Scratch"&gt;PhoneGap From Scratch&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Want to learn how to use PhoneGap, but don&amp;#8217;t know where to get started? Join us as we put together “Sculder”, not only a tribute to an excellent science fiction TV series, but a fully-fledged native mobile application for the believer in you!&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Where We Left Off&lt;/h2&gt;
&lt;p&gt;In the last part of this series, we got our web app up and running with some basic structure and transitions between pages. In this part, we are going to continue working on filling out the parts of the app that can run without PhoneGap and set up our PhoneGap project, ready for the integration.&lt;/p&gt;
&lt;p&gt;Before we get started, I wanted to cover a question that I always get asked. This is a question that I once asked, and no doubt you might have asked too. Namely: How do I debug a web app on a mobile device?&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Debugging on a Device&lt;/h2&gt;
&lt;p&gt;There are a number of ways of debugging in a device. You could go old-school and use &lt;code&gt;alert(something);&lt;/code&gt;, but having alerts all over the place is both inefficient and could end up in the production code (so annoying!). You could use the debug console in Safari on an iOS device, located in Settings -&gt; Safari -&gt; Developer, but not all devices use Safari or have a debug console. Also, this console outputs minimal information.&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/4/phonegap-fs-4-1.png" /&gt;
&lt;/div&gt;
&lt;p&gt;If I just need to use a JavaScript console to catch a &lt;code&gt;console.log()&lt;/code&gt;, or maybe execute some JS on the device to check something, I like to use &lt;a href="http://jsconsole.com/"&gt;jsconsole.com&lt;/a&gt;. It&amp;#8217;s one of the easiest methods of using a console on your device and there is even an iOS app available. To start a session on jsconsole.com, just type &lt;code&gt;:listen&lt;/code&gt; and you will then get a script tag output to include in your page. Start up you app and you will see the connection happen in the console. You can now execute JS in the console and see it reflected on the device or log to the console in your code and see it here. See the video below for a demonstration of this:&lt;/p&gt;
&lt;p&gt;&lt;!-- VIDEO --&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe src="http://blip.tv/play/hdM9gum6UwA.html?p=1" width="640" height="390" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;embed type="application/x-shockwave-flash" src="http://a.blip.tv/api.swf#hdM9gum6UwA" style="display:none"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- VIDEO --&gt;&lt;/p&gt;
&lt;p&gt;For more help on jsconsole, see &lt;a href="http://jsconsole.com/remote-debugging.html"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Another alternative is WeInRe (Web Inspector Remote). First started off as an independent project, WeInRe is now part of the PhoneGap family and can be found at &lt;a href="http://debug.phonegap.com"&gt;debug.phonegap.com&lt;/a&gt;. The set-up is very similar to jsconsole, but what you actually get is a a WebKit inspector, much like Chrome or Safari. See the video below for an example:&lt;/p&gt;
&lt;p&gt;&lt;!-- VIDEO --&gt;&lt;br /&gt;
&lt;iframe src="http://blip.tv/play/hdM9gum6WgA.html?p=1" width="640" height="390" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;embed type="application/x-shockwave-flash" src="http://a.blip.tv/api.swf#hdM9gum6WgA" style="display:none"&gt;&lt;/embed&gt;&lt;br /&gt;
&lt;!-- VIDEO --&gt;&lt;/p&gt;
&lt;p&gt;Another alternative is &lt;a href="http://socketbug.com/"&gt;Socketbug&lt;/a&gt;, which is great, but requires Node and socket.io to be installed and set up, which is unfortunately outside of the scope for this tutorial. If, however, you are feeling adventurous and want to give Socketbug a try &amp;#8211; it&amp;#8217;s worth it.&lt;/p&gt;
&lt;p&gt;Those are the debugging tools that I use. Now we can start adding some features!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Twitter Feed&lt;/h2&gt;
&lt;p&gt;One of the features that we are able to implement without a PhoneGap API is the Twitter feed. This feature will simply list a feed of tweets that match a particular search term. Thankfully, Twitter can return data in JSON format when we run a query on search.twitter.com. If you use the following URL &lt;code&gt;http://search.twitter.com/search.json?q=ufo+spotted&amp;#038;rpp=4&lt;/code&gt;, you will get a JSON response filled with enough data to fill a list.&lt;/p&gt;
&lt;p&gt;In order to get our data onto the page and display it in a nice way, we are going to use templating. There are a bunch of template engines out there and they are all worth looking at, &lt;a href="http://mustache.github.com/"&gt;Mustache&lt;/a&gt; is a very popular one and very powerful. &lt;a href="https://github.com/jquery/jquery-tmpl"&gt;jQuery&lt;/a&gt; also has one which I think is perfect for what we want to achieve.&lt;/p&gt;
&lt;p&gt;In the tweet page, I am going to have an empty &lt;code&gt;ul&lt;/code&gt; and a &lt;code&gt;div&lt;/code&gt; container that is hidden on the page. Within the container will be the code that I want to use as a template. In this case, it is a simple &lt;code&gt;li&lt;/code&gt; element with some basic markup that will hold the twitter information we want to display. It will be in a &lt;code&gt;script&lt;/code&gt; block that has a unique ID and a type of &lt;code&gt;type="text/x-jquery-tmpl"&lt;/code&gt;, this is so the browser does not execute it as JavaScript. The Twitter templating engine uses &lt;code&gt;${}&lt;/code&gt; as a placeholder for the data that we will get from our &lt;code&gt;JSON&lt;/code&gt; data. The tweets page now looks something like this:&lt;/p&gt;
&lt;pre class="brush: xml; title: ;"&gt;
&amp;lt;div id=&amp;quot;twitter&amp;quot; class=&amp;quot;current&amp;quot;&amp;gt;
	&amp;lt;ul id=&amp;quot;tweets&amp;quot;&amp;gt;

	&amp;lt;/ul&amp;gt;

	&amp;lt;script id=&amp;quot;tmpl-tweets&amp;quot; type=&amp;quot;text/x-jquery-tmpl&amp;quot;&amp;gt;
    	&amp;lt;li&amp;gt;
			&amp;lt;a class=&amp;quot;avatar&amp;quot; href=&amp;quot;#&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;${profile_image_url}&amp;quot; alt=&amp;quot;${from_user}&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;
			&amp;lt;a href=&amp;quot;http://twitter.com/${from_user}&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;${from_user}&amp;lt;/h2&amp;gt;&amp;lt;/a&amp;gt;
			&amp;lt;span class=&amp;quot;details&amp;quot;&amp;gt;${text} &amp;lt;/span&amp;gt;
		&amp;lt;/li&amp;gt;
	&amp;lt;/script&amp;gt;

&amp;lt;/div&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Now we need to write our function that will get called anytime we load this page. This function will go out to Twitter and get our feed:&lt;/p&gt;
&lt;pre class="brush: xml; title: ;"&gt;
function getTweets() {
	var q = &amp;quot;ufo+spotted&amp;quot;
		rpp = 5,
		twurl = &amp;quot;http://search.twitter.com/search.json?q=&amp;quot;;

	$.getJSON(twurl + q + &amp;quot;&amp;amp;rpp=&amp;quot; + rpp + &amp;quot;&amp;amp;callback=?&amp;quot;, function(data){
		$(&amp;quot;#tmpl-tweets&amp;quot;).tmpl(data.results).appendTo(&amp;quot;#tweets&amp;quot;);
	});
}
&lt;/pre&gt;
&lt;p&gt;I&amp;#8217;m going to have this page load first, so I have set the page&amp;#8217;s class to current. Now, we just need to add some style to the tweets, so they are displayed a bit nicer.&lt;/p&gt;
&lt;pre class="brush: xml; title: ;"&gt;
/** Tweets Styling **/

#tweets {
    list-style:none;
    padding:10px;
}

#tweets li{
    font-size:12px;
    overflow: hidden;
    margin-bottom:20px;
}

#tweets li h2{
    font-size:14px;
    margin:0;
}
.avatar{
    margin-right:10px;
}

#tweets li a, #tweets li span {
    float:left;
}

#tweets li span {
    width:70%;
}
&lt;/pre&gt;
&lt;p&gt;The next time we start up the app we should get the following.&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/4/phonegap-fs-4-2.png" alt="PhoneGap From Scratch Figure" /&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;h2&gt;Map Basics&lt;/h2&gt;
&lt;p&gt;The other feature that we can implement before we do the phonegap integration is the map feature. We are going to use the Google Maps API to generate a simple map and then use some map data to drop markers. Each marker will indicate UFO sightings.&lt;/p&gt;
&lt;p&gt;For this we are going to use the JavaScript API, currently at version 3. A full introduction to the maps API is out of scope for this tutorial, but you can find all the documentation can be found &lt;a href="http://code.Google.com/apis/maps/documentation/javascript/"&gt;here&lt;/a&gt;, as well as implementation samples. If you follow the tutorial found &lt;a href="http://code.Google.com/apis/maps/documentation/javascript/tutorial.html"&gt;here&lt;/a&gt;, you will see how to implement a basic map. We can use the same code to implement a basic map and end up with the following:&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/4/phonegap-fs-4-3.png" alt="PhoneGap From Scratch Figure" /&gt;
&lt;/div&gt;
&lt;p&gt;Now we can go to the documentation that covers the markers, found &lt;a href="http://code.Google.com/apis/maps/documentation/javascript/overlays.html#Markers"&gt;here&lt;/a&gt;. Now we can drop some basic markers on our map upon load. The markers would represent locations of sightings with the data from the photographs that have been taken and uploaded by users of the application. We would have a service running on a server that can return data via Ajax, probably in the JSON format. Again, setting up this service is an entire tutorial in itself, but for each entry we would create a marker for the map using the code provided in the demo.&lt;/p&gt;
&lt;pre class="brush: xml; title: ;"&gt;
var marker = new Google.maps.Marker({
      position: newLatlng,
      map: map,
      title:&amp;quot;New Sighting&amp;quot;
});
&lt;/pre&gt;
&lt;p&gt;After the map loads, the markers would be added. If you read through the Google API documentation, you will find other options for the markers &amp;#8211; such as displaying them with images and notes. It is worth exploring the other options and coming up with different implementations.&lt;/p&gt;
&lt;p&gt;&lt;!-- map with markers --&gt;&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/4/phonegap-fs-4-4.png" alt="PhoneGap From Scratch Figure" /&gt;
&lt;/div&gt;
&lt;p&gt;That&amp;#8217;s about as much as we can do before we get to PhoneGap. Our last function requires the use of the camera, so let&amp;#8217;s go ahead and begin setting up our PhoneGap project. Check out the introduction to PhoneGap &lt;a href="http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch/"&gt;here&lt;/a&gt; if you haven&amp;#8217;t already.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Icons, Icons, Icons&lt;/h2&gt;
&lt;p&gt;Icons are a very important part of the application. It&amp;#8217;s the image that represents your application everywhere, and there are certain guidelines you will want to follow to ensure that it looks good everywhere it will be seen. There is a great blog post &lt;a href="http://mrgan.tumblr.com/post/708404794/ios-app-icon-sizes"&gt;here&lt;/a&gt; about icon sizes and the guidelines to follow when creating an icon. I usually take a 512&amp;#215;512 icon and scale it down from there to all the sizes needed.&lt;/p&gt;
&lt;p&gt;You will also need to create a Launch image / splash screen for your app.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Xcode Project Setup&lt;/h2&gt;
&lt;p&gt;Once we have the default PhoneGap application running on our simulator and/or test device. We can go through the main summary page on the Xcode template for PhoneGap. The first thing I want to make sure is that the devices menu is set to iPhone. We could deploy to iPad too, if we wanted too, but there might be some CSS changes that we&amp;#8217;d like to make first. For now I am sticking to iPhone only. Check all the device orientations as jQuery Mobile sorts out our layout depending on orientation. You are able to drag-and-drop the image files into their allocated slots on the summary page.&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/4/phonegap-fs-4-5.png" alt="PhoneGap From Scratch Figure" /&gt;
&lt;/div&gt;
&lt;p&gt;Now, when you start up your application you will be greeted with your new app icon and launch page. Now copy over the files you have been working from in the &lt;code&gt;www&lt;/code&gt; folder. Start up the app and check that everything is working OK.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Eclipse Project Setup&lt;/h2&gt;
&lt;p&gt;After you&amp;#8217;ve set up your project in Eclipse (in the same way as we did our test project in the first part &lt;a href="http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch/"&gt;here&lt;/a&gt;) you need to have three icon sizes prepared for your application. High Density (72&amp;#215;72), Medium Density (48&amp;#215;48), and Low Density (36&amp;#215;36). These icons replace the default icons that can be found in the &lt;code&gt;res&lt;/code&gt; folder. The appropriate acronyms are hdpi, mdpi, and ldpi standing for High, Medium and Low respectively. The images you want to use as your splash screen should go in these folders too.&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/4/phonegap-fs-4-6.png" alt="PhoneGap From Scratch Figure" /&gt;
&lt;/div&gt;
&lt;p&gt;In order to have the splash screen work for Android, we need to add and modify our &lt;code&gt;DroidGap&lt;/code&gt; class to include the splash image on load. Add:&lt;/p&gt;
&lt;pre class="brush: jscript; title: ;"&gt;
super.setIntergerProperty(&amp;quot;splashscreen&amp;quot;, R.drawable.splash)
&lt;/pre&gt;
&lt;p&gt;Next, the &lt;code&gt;loadUrl&lt;/code&gt; needs a timeout added to it.&lt;/p&gt;
&lt;pre class="brush: jscript; title: ;"&gt;
super.loadUrl(&amp;quot;file:///android_asset/www/index.html&amp;quot;, 5000);
&lt;/pre&gt;
&lt;p&gt;Your file should now look like the following:&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/PhoneGap-From-Scratch/4/phonegap-fs-4-7.png" alt="PhoneGap From Scratch Figure" /&gt;
&lt;/div&gt;
&lt;p&gt;Run the application and ensure that everything is working OK.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We are now at the point where we are ready to implement our last two features:  the device camera and local storage options. Doing so will be covered in future tutorials in this series. This series will also go through submitting our app to the various app stores, so be sure to follow along!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gXgur2jJNMOvvnQL_Cu8KRhR6Cs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gXgur2jJNMOvvnQL_Cu8KRhR6Cs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gXgur2jJNMOvvnQL_Cu8KRhR6Cs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gXgur2jJNMOvvnQL_Cu8KRhR6Cs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
		<wfw:commentRss>http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch-twitter-maps/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<series:name><![CDATA[PhoneGap From Scratch]]></series:name>
	</item>
		<item>
		<title>Android SDK: Implement an Options Menu</title>
		<link>http://mobile.tutsplus.com/tutorials/android/android-sdk-implement-an-options-menu/</link>
		<comments>http://mobile.tutsplus.com/tutorials/android/android-sdk-implement-an-options-menu/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 12:30:49 +0000</pubDate>
		<dc:creator>Sue Smith</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Android SDK]]></category>
		<guid isPermaLink="false">http://mobile.tutsplus.com/?p=9453</guid>
		<description>&lt;p&gt;This tutorial will teach you how to implement an options menu in any of your Android SDK applications. Read on!&lt;br /&gt;
&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;In Android apps, you can make use of &lt;a href="http://developer.android.com/guide/topics/ui/menus.html"&gt;three standard menus&lt;/a&gt; supported within the platform: the context menu, the options menu,  and submenus. The options menu appears when the user presses the menu button on their Android device. This is a common feature in almost all apps, so your users will be used to the menu appearing in this way. The options menu is typically used for providing additional info about an app, as well as linking to a help and settings sections. To implement an options menu for an Activity in an Android app, a few fairly straightforward steps are required.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 1:&lt;/span&gt; Open an Activity Class&lt;/h2&gt;
&lt;p&gt;The options menu you create will work with one or more Activity classes, so choose an Activity and open it in Eclipse. If your app only has one Activity class as its main screen, you can use it. If you want to create a new Activity for the purposes of this tutorial, feel free to do so. Select your application package and choose &amp;#8220;File&amp;#8221;, &amp;#8220;New&amp;#8221;, then &amp;#8220;Class&amp;#8221; and enter a name of your choice. Remember to make your class extend the Activity class and add it to the application Manifest.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;&lt;span&gt;Step 2:&lt;/span&gt; Create a Resources Folder&lt;/h2&gt;
&lt;p&gt;If you look at your application project in the Eclipse Package Explorer, you will see the various files and directories within it. The &amp;#8220;res&amp;#8221; folder holds all of your application resources. To create a menu, you need a menu folder, so create one inside the &amp;#8220;res&amp;#8221; folder by selecting it and choosing &amp;#8220;File&amp;#8221;, &amp;#8220;New&amp;#8221;, then &amp;#8220;Folder&amp;#8221; and entering &amp;#8220;menu&amp;#8221; as the name.&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/android-sdk_options-menu/new_folder.png" alt="Creating a New Folder" /&gt;
&lt;/div&gt;
&lt;p&gt;Your new folder will appear within the &amp;#8220;res&amp;#8221; directory:&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
    &lt;img src="http://d339vfjsz5zott.cloudfront.net/android-sdk_options-menu/menu_folder.png" alt="The Menu Resources Folder" /&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;h2&gt;&lt;span&gt;Step 3:&lt;/span&gt; Create a Menu XML File&lt;/h2&gt;
&lt;p&gt;Your options menu will be defined as an XML file inside the new menu folder you created. Choose the folder and create a new file by selecting &amp;#8220;File&amp;#8221;, &amp;#8220;New&amp;#8221;, then &amp;#8220;File&amp;#8221; and entering a name. You can choose any filename you like, for example &amp;#8220;my_options_menu.xml&amp;#8221;. Eclipse will display error messages when you first create the menu file, but don&amp;#8217;t worry, these will disappear as you build it.&lt;/p&gt;
&lt;p&gt;Open your new XML file and enter the following outline:&lt;/p&gt;
&lt;pre class="brush: xml; title: ;"&gt;
&amp;lt;menu xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&amp;gt;

&amp;lt;/menu&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Between these opening and closing tags, you will place XML markup for each item in your options menu.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 4:&lt;/span&gt; Add Items to Your Menu&lt;/h2&gt;
&lt;p&gt;You can add one or more items to your options menu depending on the needs of your own project. Add an item for each menu option using the following syntax:&lt;/p&gt;
&lt;pre class="brush: xml; title: ;"&gt;
&amp;lt;item android:id=&amp;quot;@+id/about&amp;quot;
android:title=&amp;quot;About&amp;quot; /&amp;gt;
&amp;lt;item android:id=&amp;quot;@+id/help&amp;quot;
android:title=&amp;quot;Help&amp;quot; /&amp;gt;
&lt;/pre&gt;
&lt;p&gt;This defines two menu items, one for an &amp;#8220;About&amp;#8221; section and one for &amp;#8220;Help&amp;#8221; information. Each menu has an ID attribute and a title. The ID attribute allows your application code to refer to the item and the title defines the text users will see when the menu appears.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;&lt;span&gt;Step 5:&lt;/span&gt; Create Icons for Your Menu Items&lt;/h2&gt;
&lt;p&gt;You do not need to create icons for your options menu items, but you can do so if you wish. Use a graphic design or image editing program of your choice to create your icons as PNG files and place them in your application drawable folders. By default, Eclipse creates three drawable folders, for low, medium, and high resolution user devices. You can copy image files into these folders by browsing to your workspace, then locating your Android project directory and finding the &amp;#8220;res/drawable&amp;#8221; folders from there.&lt;/p&gt;
&lt;p&gt;The official &lt;a href="http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html"&gt;Android guidelines&lt;/a&gt; recommend a maximum of 72px squared for high resolution, 48px for medium and 36px for low. Once you have your icons in their folders, you can alter your menu item XML to include them as follows:&lt;/p&gt;
&lt;pre class="brush: xml; title: ;"&gt;
&amp;lt;item android:id=&amp;quot;@+id/about&amp;quot;
android:icon=&amp;quot;@drawable/about&amp;quot;
android:title=&amp;quot;About&amp;quot; /&amp;gt;
&amp;lt;item android:id=&amp;quot;@+id/help&amp;quot;
android:icon=&amp;quot;@drawable/help&amp;quot;
android:title=&amp;quot;Help&amp;quot; /&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Each drawable reference uses the filename minus its extension.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;&lt;span&gt;Step 6: &lt;/span&gt;Inflate Your Menu Resource&lt;/h2&gt;
&lt;p&gt;To instruct Android to use your options menu, open the Activity class you want it to appear with. Add the following method to your Java code, inside the class declaration and after the &amp;#8220;onCreate&amp;#8221; method:&lt;/p&gt;
&lt;pre class="brush: java; title: ;"&gt;
public boolean onCreateOptionsMenu(Menu menu) {

	MenuInflater inflater = getMenuInflater();
	inflater.inflate(R.menu.my_options_menu, menu);
	return true;
}
&lt;/pre&gt;
&lt;p&gt;Alter the &amp;#8220;my_options_menu&amp;#8221; section if you saved your menu XML file with a different name.&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
     &lt;img src="http://d339vfjsz5zott.cloudfront.net/android-sdk_options-menu/activity_options.png" alt="The Options Menu for an Activity" /&gt;
&lt;/div&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 7: &lt;/span&gt;Detect User Interaction&lt;/h2&gt;
&lt;p&gt;To respond to user interaction with your menu, you first need to detect it within your Activity class. Add the following method outline after the &amp;#8220;onCreateOptionsMenu&amp;#8221; method:&lt;/p&gt;
&lt;pre class="brush: java; title: ;"&gt;
public boolean onOptionsItemSelected(MenuItem item) {

	//respond to menu item selection

}
&lt;/pre&gt;
&lt;p&gt;Inside this method, which returns a boolean value, you can add code to respond to each particular item. The system will automatically call the &amp;#8220;onOptionsItemSelected&amp;#8221; method when the user chooses any of the options menu items.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;&lt;span&gt;Step 8:&lt;/span&gt; Respond to Menu Item Selection&lt;/h2&gt;
&lt;p&gt;Before your code can respond appropriately to user interaction with the menu, you need to work out which item was selected. Add a switch statement to your method using the following sample syntax:&lt;/p&gt;
&lt;pre class="brush: java; title: ;"&gt;
switch (item.getItemId()) {
	case R.id.about:
	startActivity(new Intent(this, About.class));
	return true;
	case R.id.help:
	startActivity(new Intent(this, Help.class));
	return true;
	default:
	return super.onOptionsItemSelected(item);
}
&lt;/pre&gt;
&lt;p&gt;Add a case statement for each item in your menu. This sample code starts new Activity screens for each item chosen. If you opt to do this, you will need to add an Activity class for each option in your application Java code as well as in the Manifest file.&lt;/p&gt;
&lt;div class="tutorial_image"&gt;
&lt;img src="http://d339vfjsz5zott.cloudfront.net/android-sdk_options-menu/option_selected.png" alt="The User Selecting a Menu Item" /&gt;
&lt;/div&gt;
&lt;hr/&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Your Activity should now display the options menu when users press their device menu button. The complete Activity code follows, for an options menu used with the main Activity class:&lt;/p&gt;
&lt;pre class="brush: java; title: ;"&gt;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public class GreatAndroidAppActivity extends Activity {

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}

	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.my_options_menu, menu);
		return true;
	}

	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.about:
		startActivity(new Intent(this, About.class));
		return true;
		case R.id.help:
		startActivity(new Intent(this, Help.class));
		return true;
		default:
		return super.onOptionsItemSelected(item);
		}
	}
}
&lt;/pre&gt;
&lt;p&gt;Eclipse typically adds the import statements automatically as you enter your Java code.&lt;/p&gt;
&lt;p&gt;As with any development project, your apps will be more usable if they exploit the type of interaction and functionality users expect as standard. Using the options menu is a good way to achieve this when providing informative sections.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qbOYaTDA82y-yZulZdEsepJF_vc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qbOYaTDA82y-yZulZdEsepJF_vc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qbOYaTDA82y-yZulZdEsepJF_vc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qbOYaTDA82y-yZulZdEsepJF_vc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
		<wfw:commentRss>http://mobile.tutsplus.com/tutorials/android/android-sdk-implement-an-options-menu/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Mobile Flash is Far From Dead: Setting the Record Straight</title>
		<link>http://mobile.tutsplus.com/articles/news/mobile-flash-is-far-from-dead-setting-the-record-straight/</link>
		<comments>http://mobile.tutsplus.com/articles/news/mobile-flash-is-far-from-dead-setting-the-record-straight/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 12:30:39 +0000</pubDate>
		<dc:creator>Joseph Labrecque</dc:creator>
				<category><![CDATA[News]]></category>
		<guid isPermaLink="false">http://mobile.tutsplus.com/?p=9436</guid>
		<description>&lt;p&gt;In light of recent announcements from Adobe, there has been a lot of confusion over the state of the Flash Platform &amp;#8211; specifically in regard to Flash content on mobile devices. This article seeks to clarify many of the misconceptions that exist by addressing the main points of confusion around these announcements regardless of the initial, monumental, and absolutely unbelievable blunders from failed public (and private) relations messaging and general marketing surrounding these announcements.&lt;!--more--&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;November 9th, 2011&lt;/h2&gt;
&lt;p&gt;On this day, Adobe was scheduled to have its regular analyst meeting to talk about how things were going for the company and lay some groundwork for the direction of the year ahead.&lt;/p&gt;
&lt;blockquote class="pullquote pqRight"&gt;&lt;p&gt;A variety of technical publications began declaring &amp;#8220;Flash is dead&amp;#8221;&amp;#8230;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;A press release and blog post released that morning stated that Adobe did intend to drop all future mobile browser work on the mobile version of the Flash Player. Even more alarming than this fact was the language used by Adobe, which centered around the dismissal of the mobile Flash Player with statements indicating  that HTML was the superior technology. This rightly upset a good number of Adobe’s strongest supporters in the Flash and Flex community.&lt;/p&gt;
&lt;p&gt;Later that week Adobe posted more information about their plans for Flex and revealed that the SDK would be contributed to the Apache Foundation and maintained by Spoon, Adobe, and the community at large.&lt;/p&gt;
&lt;p&gt;To say that the community was shocked by these statements would be putting it mildly. A variety of technical publications began declaring &amp;#8220;Flash is dead&amp;#8221;, and then the real PR-nightmare began as those of us with investments in the Flash Platform became flooded with inquiries from publishers, editors, clients, and the general public &amp;#8211; all demanding clarity.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Mobile Flash Player in the Browser&lt;/h2&gt;
&lt;p&gt;So, what really happened that day? What did Adobe really say? Adobe stated that they would be halting development of the mobile web browser version of Flash Player for Android. This effectively places future versions of Android on the same level as iOS regarding Flash Player.&lt;/p&gt;
&lt;p&gt;They are doing this as part of a massive company reorganization to shift resources to HTML support and tooling, and to focus mobile Flash efforts to AIR on Android, iOS, and other potential systems like Windows 8 Metro. Overall, this is a good thing and, if presented differently, would not have had nearly the negative impact that it has.&lt;/p&gt;
&lt;p&gt;It is important to note that mobile Flash Player 11 is not going away on Android (for now) – but if Android handsets want to continue with new versions, they must license the porting kit from Adobe and compile it for their customers. It will remain available for download and use in the meantime.&lt;/p&gt;
&lt;p&gt;Mobile Flash Player source is being licensed to those who wish to compile for their own platforms (like Blackberry does now). So, mobile Flash Player may not be going away at all in some circumstances. It all depends on what the partners want to do.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Apache Flex&lt;/h2&gt;
&lt;p&gt;With regard to announcements surrounding Flex: the SDK is being donated to the Apache Software Foundation and will receive continued (hopefully invigorated) support by the Spoon project, Adobe itself, and possibly other corporate contributors.&lt;/p&gt;
&lt;p&gt;Flex has seen a good deal of adoption by Flash developers for use in mobile AIR-based projects due to increased, near-native performance in recent builds and for the excellent layout and structural resources it provides. Many mobile developers have a large investment in the framework, and are rightly concerned. &lt;/p&gt;
&lt;p&gt;Flex is now an Apache &amp;#8220;incubator podling&amp;#8221;, and is a very active project within Apache. Assuming that the Apache Flex team is able to organize everything enough to put out a release or two (normally achievable over 4-6 months), the project is expected to graduate to full Apache project status – putting it on the same level as ANT, Tomcat, HTTPD, and other well-known, popular projects used worldwide.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Note that PhoneGap (now, Apache Cordova) was also contributed to Apache by Adobe directly after the Nitobi acquisition – so this is by no means a death sentence or dismissal of the framework.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;With Flex in the hands of the wider community, there are actually more resources available in light of the number of individual contributors. Even if you are not an Apache contributor yourself, if you have a patch for Flex that would be useful for others – get in touch with a contributor to see whether they might see value in the patch and perform the contribution in your stead.&lt;/p&gt;
&lt;p&gt;Don’t forget that a number of contributors are Adobe engineers and the company has stated that although the runtimes are still under their care – they will align releases in light of what is going on at Apache.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Adobe AIR (Mobile Flash Apps)&lt;/h2&gt;
&lt;blockquote class="pullquote pqRight"&gt;&lt;p&gt;Adobe is &amp;#8220;doubling-down&amp;#8221; on AIR for mobile.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;As stated, Flash content delivered through mobile AIR on iOS, Android, and Blackberry is going nowhere and is in fact being provided with more resources. This is what most developers have been working with when it comes to mobile– not Flash Player in the browser.&lt;/p&gt;
&lt;p&gt;I believe that AIR is still quite valuable for mobile application development and especially valuable for gaming with the upcoming Stage3D support. Buried amid the 11/9 announcements is a repeated statement that Adobe is &amp;#8220;doubling-down&amp;#8221; on AIR for mobile. &lt;/p&gt;
&lt;p&gt;One of the reasons cited for dropping mobile Flash Player in the browser was to divert resources to mobile AIR. Furthermore, Adobe&amp;#8217;s new line of Touch Apps for Android are (almost) all built upon AIR for Android. All of these signs, along with continued development of the runtimes, points to an active future on mobile for the Flash Platform.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Closing Thoughts&lt;/h2&gt;
&lt;p&gt;Recent announcements from Adobe really aren&amp;#8217;t nearly as bad for developers with investments in Flash technology as it would seem. Mobile Flash Player in the browser was (and still is) nice to have. Since November 9th, 2011 – Adobe has pushed out a number of updates to both Flash Player 11 and AIR 3 on mobile. They are actively supporting Flash Player 11 on Android 4.0 &amp;#8220;Ice Cream Sandwich&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Publishers like O’Reilly and video2brain have both published materials from myself and others since the announcements. My employer and clients value skilled developers who know how to work with Flash on devices, desktops, and even servers. &lt;/p&gt;
&lt;p&gt;Things will even out as the reality of the situation becomes clear and people stop freaking out over the announcements. In fact, Adobe is running a &amp;#8220;Flex User Group 2012 Tour&amp;#8221; in North America to dispel some of these myths and rebuild trust within the community. Flash definitely has a home on mobile – it just might take a different form than what we initially expected. &lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.mikechambers.com/blog/2011/11/11/clarifications-on-flash-player-for-mobile-browsers-the-flash-platform-and-the-future-of-flash/"&gt;Flash to Focus on PC Browsing and Mobile Apps; Adobe to More Aggressively Contribute to HTML5 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mikechambers.com/blog/2011/11/10/flash-professional-and-the-future/"&gt;Flash Professional and the Future&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mikechambers.com/blog/2011/11/11/clarifications-on-flash-player-for-mobile-browsers-the-flash-platform-and-the-future-of-flash/"&gt;Clarifications on Flash Player for Mobile Browsers, the Flash Platform, and the Future of Flash &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html"&gt;Your Questions About Flex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.adobe.com/flex/2012/01/announcing-flex-user-group-2012-tour-north-america-dates.html"&gt;Announcing Flex User Group 2012 Tour: North America Dates &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2kHAZKcnYseBvIuhiX7Nic9g2WY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2kHAZKcnYseBvIuhiX7Nic9g2WY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2kHAZKcnYseBvIuhiX7Nic9g2WY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2kHAZKcnYseBvIuhiX7Nic9g2WY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
		<wfw:commentRss>http://mobile.tutsplus.com/articles/news/mobile-flash-is-far-from-dead-setting-the-record-straight/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Win A Free Copy of Android 3.0 Animations: Beginner’s Guide</title>
		<link>http://mobile.tutsplus.com/articles/contests/win-a-free-copy-of-android-3-0-animations-beginners-guide/</link>
		<comments>http://mobile.tutsplus.com/articles/contests/win-a-free-copy-of-android-3-0-animations-beginners-guide/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 22:37:41 +0000</pubDate>
		<dc:creator>Mark Hammonds</dc:creator>
				<category><![CDATA[Contests]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[giveaway]]></category>
		<guid isPermaLink="false">http://mobile.tutsplus.com/?p=9421</guid>
		<description>&lt;p&gt;Readers will be pleased to know that Mobiletuts+ has teamed up with Packt Publishing to organize an Android book giveaway! You could be one of three lucky winners to receive a copy of &lt;em&gt;Android 3.0 Animations: Beginner’s Guide&lt;/em&gt;. Keep reading to find out how to enter!&lt;br /&gt;
&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;Overview of &lt;em&gt;Android 3.0 Animations: Beginner&amp;#8217;s Guide&lt;/em&gt;&lt;/h2&gt;
&lt;div class="tutorial_image"&gt;
    &lt;a href="http://www.packtpub.com/android-3-0-animations-beginners-guide/book"&gt;&lt;img src="http://d339vfjsz5zott.cloudfront.net/android-3-animations/Unknown.jpeg" alt="Android 3.0 Animations Cover" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;This book will teach you how to create animated graphics from a set of still images, fade between graphical elements, and dynamically move graphics on the interface. In addition, you&amp;#8217;ll also learn how to distort images and generally mess around with parts of your app&amp;#8217;s user interface. &lt;/p&gt;
&lt;p&gt;Read more about this book and download the free Sample Chapter &lt;a href="http://www.packtpub.com/sites/default/files/5283EXP-Chapter-2-Frame-Animations.pdf?utm_source=packtpub&amp;#038;utm_medium=free&amp;#038;utm_campaign=pdf"&gt;at the PacktPub web site&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;How to Enter?&lt;/h2&gt;
&lt;p&gt;All you need to do is head over to the &lt;a href="http://www.packtpub.com/android-3-0-animations-beginners-guide/book"&gt;book page&lt;/a&gt; and look through the product description of this book. Then drop a line via the &lt;strong&gt;comments below to let us know what interests you most about this book.&lt;/strong&gt; It&amp;#8217;s that simple! &lt;/p&gt;
&lt;h2&gt;Competition Rules&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Valid entrants must submit a comment on this post listing at least one aspect of the book that they are most interested in.&lt;/li&gt;
&lt;li&gt;You may enter only once.&lt;/li&gt;
&lt;li&gt;Make sure to enter your real name and a valid e-mail address so that we can contact you if you’re chosen as a winner.&lt;/li&gt;
&lt;li&gt;Entries will be accepted until February 13th, 2012.&lt;/li&gt;
&lt;li&gt;Once the contest has closed, Packt Publishing will then choose the three winners.&lt;/li&gt;
&lt;li&gt;Winners will then be announced and notified via email.&lt;/li&gt;
&lt;li&gt;Winners from the U.S. and Europe can either choose a physical copy of the book or the eBook copy. Entrants from other locales are limited to the eBook copy only.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/32QEQld3C_SllsfD-LBrWME7y9s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/32QEQld3C_SllsfD-LBrWME7y9s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/32QEQld3C_SllsfD-LBrWME7y9s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/32QEQld3C_SllsfD-LBrWME7y9s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
		<wfw:commentRss>http://mobile.tutsplus.com/articles/contests/win-a-free-copy-of-android-3-0-animations-beginners-guide/feed/</wfw:commentRss>
		<slash:comments>57</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.614 seconds -->

