<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://devlicio.us/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Sergio Pereira : Android, Development</title><link>http://devlicio.us/blogs/sergio_pereira/archive/tags/Android/Development/default.aspx</link><description>Tags: Android, Development</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Android App From Idea to Market In a Few Hours</title><link>http://devlicio.us/blogs/sergio_pereira/archive/2010/12/06/android-app-from-idea-to-market-in-a-few-hours.aspx</link><pubDate>Tue, 07 Dec 2010 04:11:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:63789</guid><dc:creator>sergiopereira</dc:creator><slash:comments>6</slash:comments><description>&lt;p&gt;I had been playing a little bit with Android development but
  not really worried about creating any useful or commercially 
  viable application yet. I believe I&amp;#39;ll end up creating a handful
  of small apps, some for personal use and some for fun. It will not
  hurt if a fraction of those yield some profit, but that isn&amp;#39;t a
  realistic goal for now.&lt;/p&gt;

  &lt;p&gt;Maybe I&amp;#39;m wrong, but judging from what I&amp;#39;ve done professionally up
  to this date, I think any money that I eventually make with mobile
  apps will come from custom built LOB apps.&lt;/p&gt;

  &lt;p&gt;Nevertheless, the app I&amp;#39;m going to walk us through in this post is
  a free and for-fun project. You can find the complete source code at the bottom.&lt;/p&gt;

  &lt;h3&gt;The Idea&lt;/h3&gt;
	Just the other day on Twitter I was poking fun at  
	&lt;a href="http://geekswithblogs.net/dlussier/Default.aspx"&gt;D&amp;#39;Arcy Lussier&lt;/a&gt;, then
	 &lt;a href="http://www.igloocoder.com"&gt;Don Belcham&lt;/a&gt; came up with a
	 funny comment that triggered this colossal waste of code.

	 &lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergio_5F00_pereira.2010.12/android1_5F00_1.png"&gt;&lt;img src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergio_5F00_pereira.2010.12/android1_5F00_1_5F00_small.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

	 Fast forward to later that day, the app was ready for download.

	 &lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergio_5F00_pereira.2010.12/android1_5F00_2.png"&gt;&lt;img src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergio_5F00_pereira.2010.12/android1_5F00_2_5F00_small.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

     &lt;h3&gt;The Lessons&lt;/h3&gt;

	 &lt;p&gt;
		Since this app is really a glorified &lt;i&gt;Hello World&lt;/i&gt; 
		and I had never let any other Android app leave the confines of my emulator, 
		that&amp;#39;s the perspective I&amp;#39;m hoping to share.
	&lt;/p&gt;
	&lt;p&gt;
		I&amp;#39;ll try to show what&amp;#39;s involved from when your first app is ready to fly to when
		it&amp;#39;s finally available for download in the Android Market.
	 &lt;/p&gt;

  &lt;h3&gt;The Prerequisites&lt;/h3&gt;
  &lt;p&gt;
	There are tons of 
	&lt;a href="http://www.barebonescoder.com/2010/04/a-simple-android-splash-screen/"&gt;compentent&lt;/a&gt; 
	&lt;a href="http://www.getsolved.com/mobile/android/google-android-hello-world-with-eclipse/"&gt;introductory&lt;/a&gt; 
	&lt;a href="http://hackaday.com/2010/07/15/android-dev-101-%E2%80%93-part-1hello-world/"&gt;articles&lt;/a&gt; 
	to Android development, and
	I&amp;#39;ll do everybody a favor and not rehash all that here. Suffice to say 
	you can assume I went through some of those articles and have my development machine
	ready to go, with:
  &lt;/p&gt;
	&lt;ul&gt;
		&lt;li&gt;JDK (not just the JRE)&lt;/li&gt;
		&lt;li&gt;Android &lt;a href="http://developer.android.com/sdk/index.html"&gt;SDK&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Eclipse IDE&lt;/li&gt;
		&lt;li&gt;Android Development Tools for Eclipse (&lt;a href="http://developer.android.com/guide/developing/eclipse-adt.html"&gt;ADT&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;At least one virtual device (AVD) created (the emulator)&lt;/li&gt;
	&lt;/ul&gt;
	&lt;p&gt;
		As you probably know, you don&amp;#39;t need to use Eclipse but I think it makes
		your life easier if you&amp;#39;re a total Java n00b like myself; most
		of the Android tutorials and Q&amp;amp;A out there refer to Eclipse.
	&lt;/p&gt;
	
  &lt;h3&gt;The Code&lt;/h3&gt;

  &lt;p&gt;In case I haven&amp;#39;t said it enough, this is a very simple application, so 
  I chose to target the lowest SDK version that I could, which in my case is the
  absolute lowest one available: SDK version 3 for Android 1.5 (Cupcake.)&lt;/p&gt;

  &lt;p&gt;To create the blinking 12:00 text I figured the easiest way would
	be to use two separate image files and alternate between them using a
	very basic animation. The animation is 
	&lt;a href="http://developer.android.com/guide/topics/graphics/2d-graphics.html"&gt;preferred 
	over (animated) GIFs&lt;/a&gt;.
  &lt;/p&gt;

  &lt;p&gt;
	Images are embedded in your application as resources, under your project&amp;#39;s
	&lt;code&gt;res/drawable&lt;/code&gt; directory.
  &lt;p&gt;

  	 &lt;p&gt;&lt;img src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergio_5F00_pereira.2010.12/android1_5F00_3.png" alt="" /&gt;&lt;/p&gt;

	&lt;p&gt;I used a pair of PNG images with transparent backgrounds. One of them is seen below.&lt;/p&gt;

  	 &lt;p&gt;&lt;img src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergio_5F00_pereira.2010.12/android1_5F00_4.png" alt="" /&gt;&lt;/p&gt;

	&lt;p&gt;Animations are defined in another type of resource. They are XML files with
	the animation specification. They support a nice range of &lt;i&gt;tweening&lt;/i&gt; parameters but
	we&amp;#39;ll only need a straight forward frame-by-frame animation. Here&amp;#39;s the &lt;code&gt;clock.xml&lt;/code&gt;
	file that I created inside that same &lt;code&gt;drawable&lt;/code&gt; directory. Note the 
	two image files drawable resource names that are the file names minus the extension.&lt;/p&gt;

	&lt;pre name="code" class="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;animation-list xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;
  android:oneshot=&amp;quot;false&amp;quot;&amp;gt;
  &amp;lt;item 
    android:drawable=&amp;quot;@drawable/dashes_red_alpha&amp;quot; 
    android:duration=&amp;quot;500&amp;quot; /&amp;gt;
  &amp;lt;item 
    android:drawable=&amp;quot;@drawable/numbers_red_alpha&amp;quot; 
    android:duration=&amp;quot;500&amp;quot; /&amp;gt;
&amp;lt;/animation-list&amp;gt;&lt;/pre&gt;

	&lt;p&gt;Now we need to make that animation show up in the
	center of the screen. The application has only one
	activity (activities are the Android term for screens, windows, dialogs, etc.)
	That appearance of that screen is defined by the layout file &lt;code&gt;main.xml&lt;/code&gt;, in the
	project&amp;#39;s &lt;code&gt;res/layout&lt;/code&gt; directory. If you&amp;#39;re familiar with other
	XML based GUI layout formats like XAML or XUL (and even XHTML and ASP.NET 
	webforms to some extend,) Android layout syntax is fairly reasonable. The
	sad part is that there isn&amp;#39;t a good editor for them (there are some
	attempts out there but nothing worth praising yet.)&lt;/p&gt;

	&lt;p&gt;Anyway, here&amp;#39;s the layout I used in &lt;code&gt;main.xml&lt;/code&gt;. The animation
	will be displayed by that &lt;code&gt;ImageView&lt;/code&gt; view (views are the individual
	elements or controls like textboxes and buttons, etc.) You can see 
	that the image is centered in the layout (the &lt;code&gt;layout_centerInParent&lt;/code&gt;
	attribute.)&lt;/p&gt;

	&lt;pre name="code" class="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;RelativeLayout 
    ...
  &amp;gt;  
  &amp;lt;ImageView android:id=&amp;quot;@+id/digits&amp;quot;
    ...
    android:layout_centerInParent=&amp;quot;true&amp;quot;
    android:background=&amp;quot;@drawable/clock&amp;quot;
    /&amp;gt;  
&amp;lt;/RelativeLayout&amp;gt;&lt;/pre&gt;

	&lt;p&gt;All that&amp;#39;s left now is telling our activity to use the above layout
	and start the animation when the app gains focus (we need to wait until
	the app gets focus otherwise it might be too early to start and it will
	not do anything). The main activity class in this project is called Home, seen
	below&lt;/p&gt;

&lt;pre name="code" class="java"&gt;public class Home extends Activity {
  /* snip */

  @Override
  public void onWindowFocusChanged(boolean hasFocus) {
    AnimationDrawable frameAnimation = 
	  (AnimationDrawable) findViewById(R.id.digits).getBackground();

    if (hasFocus) {
      frameAnimation.start();
    } else {
      frameAnimation.stop();
    }
  }
}&lt;/pre&gt;

	&lt;p&gt;And that&amp;#39;s all there&amp;#39;s to this application. We can start it in the AVD
	emulator and see it in all its blinktastic glory.&lt;/p&gt;

	&lt;p&gt;&lt;img src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergio_5F00_pereira.2010.12/android1_5F00_5.gif" alt="" /&gt;&lt;/p&gt;

  &lt;h3&gt;Package it up&lt;/h3&gt;
	
	&lt;p&gt;Having an app running on the emulator or in your own phone is
	nice but it doesn&amp;#39;t make the world a better place. We must push this
	application to the Android Market so everyone can have it.&lt;/p&gt;

	&lt;p&gt;At this point I should be telling you how a responsible developer
	would test his app in different AVDs, maybe different real devices,
	screen orientations, etc. But guess what? No siree, Bob. 
	&amp;lt;sarcasm&amp;gt;In true Android developer fashion,&amp;lt;/sarcasm&amp;gt; we&amp;#39;re 
	going straight to
	the Market and there&amp;#39;s no stopping us.&lt;/p&gt;

	&lt;h4&gt;Build it&lt;/h4&gt;

	&lt;p&gt;The first step in packaging the app is to simply build the release binaries.
	Yo can do that in Eclipse by right-clicking the project in the Package Explorer and
	choosing &lt;i&gt;Android Tools -&amp;gt; Export Unsigned Application Package&lt;/i&gt; and
	choose a directory to save it. You application .apk file will be created there.&lt;/p&gt;

	&lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergio_5F00_pereira.2010.12/android1_5F00_6.png"&gt;&lt;img src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergio_5F00_pereira.2010.12/android1_5F00_6_5F00_small.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

	&lt;h4&gt;Sign it&lt;/h4&gt;

	&lt;p&gt;We can&amp;#39;t simply send that file as-is to the market. To be accepted in the market,
	our application needs to be &lt;i&gt;stamped&lt;/i&gt; with something that tells everyone who
	built it. This is akin to the strong naming keys that are used in .NET.&lt;/p&gt;

	&lt;p&gt;To stamp, or sign, our app we first need to create our own private key and
	certificate, which will live in a &lt;i&gt;keystore&lt;/i&gt; file. If you already have one such file,
	you can obviously use the existing one instead. We can use the &lt;b&gt;keytool.exe&lt;/b&gt;
	utility to do create it. In my box I have keytool in the JDK installation directory, so I&amp;#39;ll 
	run this command (one line):&lt;/p&gt;

	&lt;pre&gt;C:\[JDKHOME]\bin\keytool.exe -genkey -v 
  -keystore your_secret_file.keystore -alias YourAliasHere -keyalg RSA 
  -keysize 2048 -validity 10000&lt;/pre&gt;

	&lt;p&gt;When you run it, it&amp;#39;ll ask you for a few identification parameters for the certificate and
	also a password that you&amp;#39;ll need to remember later. Just like the SN key files in .NET, 
	make sure you keep the produced keystore file in a safe place.&lt;/p&gt;

	&lt;p&gt;Time to use another tool to sign our .apk file with the information
	in the keystore file. Use this command.&lt;/p&gt;

	&lt;pre&gt;C:\[JDKHOME]\bin\jarsigner.exe -keystore 
  your_secret_file.keystore YourApp.apk YourAliasHere&lt;/pre&gt;

	&lt;p&gt;The above command will prompt you for the password again.&lt;/p&gt;

	&lt;h4&gt;Optimize it&lt;/h4&gt;

	&lt;p&gt;The last step in the .apk preparation is an optimization process to realign bytes 
	in the file for faster reads on the device. You&amp;#39;d be surprised to know that there&amp;#39;s
	another tool to do that. Not surprised? I thought so. Here&amp;#39;s the command. You&amp;#39;ll
	find the utility in your Android SDK installation directory. It will write
	the optimized version to another .apk file, which I&amp;#39;m choosing to name with the
	version number 1.0.&lt;/p&gt;

	&lt;pre&gt;C:\[ANDROID_SDK_HOME]\tools\zipalign.exe -v 4 YourApp.apk YourApp_1_0.apk&lt;/pre&gt;

	&lt;p&gt;Now to the market we go.&lt;/p&gt;

	&lt;h3&gt;Publishing an app&lt;/h3&gt;

	&lt;p&gt;The &lt;a href="http://market.android.com/"&gt;Android Market&lt;/a&gt; is 
		where the vast majority of Android users go to find apps for
		their devices. You definitely want to have your application
		listed in there.
	&lt;/p&gt;
	
	&lt;p&gt;In order to upload an app to the market, you&amp;#39;ll need to purchase a
	developer account, which at the time of this writing will cost
	you USD 25.00.&lt;/p&gt;

	&lt;p&gt;We&amp;#39;re almost done here, I promise. Next we only need to logon to
	the market with our newly minted account and upload the application.
	The upload form will ask you for a couple of screenshots, a 512x512
	high-res icon (?) and a bunch of other unsurprising fields.&lt;/p&gt;

	&lt;p&gt;Hit &lt;b&gt;Publish&lt;/b&gt; and pat yourself on the back. You&amp;#39;re officially
	an Android developer. I hope your first app isn&amp;#39;t as lame as mine and
	that I could have helped you go through the process quicker than I.&lt;/p&gt;

  &lt;h3&gt;Money flows in. Oh, wait&lt;/h3&gt;

  &lt;p&gt;Okay, I can&amp;#39;t promise an early retirement to anyone. That&amp;#39;s on you to 
  create the next viral app. But I can leave you with some good examples
  of successful apps.&lt;/p&gt;

  &lt;ul&gt;
	  &lt;li&gt;&lt;a href="http://www.develop-online.net/news/36155/Paper-Toss-dev-makes-500k-per-month-with-ads"&gt;Paper Toss dev makes $500k per month&lt;/a&gt;&lt;/li&gt;
	  &lt;li&gt;&lt;a href="http://www.androidcentral.com/angry-birds-android-expected-generate-1-million-month-video"&gt;Angry Birds for Android expected to generate $1 million per month&lt;/a&gt;&lt;/li&gt;
	  &lt;li&gt;&lt;a href="http://eddiekim.posterous.com/an-android-success-story-13000month-sales-0"&gt;An Android Success Story: $13,000/month App Sales&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;h3&gt;Source code&lt;/h3&gt;
  &lt;p&gt;Although there isn&amp;#39;t really much to it, you can also download &lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/sergio_5F00_pereira.2010.12/midnight_2D00_flasher_2D00_src.zip"&gt;the
  source code of this app&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=63789" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/sergio_pereira/archive/tags/Development/default.aspx">Development</category><category domain="http://devlicio.us/blogs/sergio_pereira/archive/tags/Mobile/default.aspx">Mobile</category><category domain="http://devlicio.us/blogs/sergio_pereira/archive/tags/Android/default.aspx">Android</category></item><item><title>The Ground is Shaking Again. Get Mobile.</title><link>http://devlicio.us/blogs/sergio_pereira/archive/2010/06/17/the-ground-is-shaking-again-get-mobile.aspx</link><pubDate>Thu, 17 Jun 2010 05:08:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:60619</guid><dc:creator>sergiopereira</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;A little over two years ago I commented how surprising it was that
&lt;a href="http://devlicio.us/blogs/sergio_pereira/archive/2008/05/18/and-the-winner-is-vb-net.aspx"&gt;VisualBasic 
was still more popular than C#&lt;/a&gt; in the .Net world. Back 
then I checked the &lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"&gt;TIOBE Index&lt;/a&gt; 
and saw that VB (in all its flavors) enjoyed almost 11% of relevance 
while C# wasn&amp;#39;t even at the 4% level.&lt;/p&gt;

&lt;p&gt;When we look at the June 2010 rank below we see that C# has finally
caught up with VB, and it&amp;#39;s safe to say C# is now the
most popular .Net language (remember, the VB index is not made up of just VB.NET.)&lt;/p&gt;

&lt;table&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Java&lt;/td&gt;&lt;td&gt;18.03%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:18.03%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td&gt;17.81%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:17.81%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;C++&lt;/td&gt;&lt;td&gt;10.76%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:10.76%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;PHP&lt;/td&gt;&lt;td&gt;8.93%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:8.93%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;(Visual) Basic&lt;/td&gt;&lt;td&gt;5.87%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:5.87%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;C#&lt;/td&gt;&lt;td&gt;5.20%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:5.20%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;Python&lt;/td&gt;&lt;td&gt;4.27%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:4.27%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;Perl&lt;/td&gt;&lt;td&gt;3.20%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:3.20%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;Objective-C&lt;/td&gt;&lt;td&gt;2.47%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:2.47%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;Delphi&lt;/td&gt;&lt;td&gt;2.39%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:2.39%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;JavaScript&lt;/td&gt;&lt;td&gt;2.19%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:2.19%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;Ruby&lt;/td&gt;&lt;td&gt;2.07%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:2.07%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;PL/SQL&lt;/td&gt;&lt;td&gt;0.79%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:0.79%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;SAS&lt;/td&gt;&lt;td&gt;0.70%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:0.70%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;Pascal&lt;/td&gt;&lt;td&gt;0.70%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:0.70%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;Lisp/Scheme/Clojure&lt;/td&gt;&lt;td&gt;0.65%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:0.65%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;Lua&lt;/td&gt;&lt;td&gt;0.59%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:0.59%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;MATLAB&lt;/td&gt;&lt;td&gt;0.59%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:0.59%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;ABAP&lt;/td&gt;&lt;td&gt;0.58%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:0.58%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;tr&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;PowerShell&lt;/td&gt;&lt;td&gt;0.53%&lt;/td&gt;&lt;td style="width:300px;"&gt;&lt;div style="background-color:blue;width:0.53%;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;
&lt;/table&gt;

&lt;p&gt;Again, anyone can debate the importance of this ranking system, but at least it
has been there for a while and to me it seems to represent the
pulse of software development quite well.&lt;/p&gt;

&lt;h3&gt;Movers and shakers&lt;/h3&gt;

&lt;p&gt;But this post is not about C# vs. VB.NET.&lt;/p&gt;

&lt;p&gt;This time around what caught my attention was the &lt;b&gt;impressive
rise of  Objective-C&lt;/b&gt; (up 36 positions in one year). Now,
no matter how more common Macs have become in the last few years,
no one will convince me this increase in Objective-C is due to
native OSX application development :)&lt;/p&gt;

&lt;p&gt;Of course we all know it&amp;#39;s caused by the surge in mobile and device app
development (iPhone, iPad, and anything that they decide will
run the iOS, like the AppleTV in the future, who knows?)&lt;/p&gt;

&lt;p&gt;If you look at the trending chart on the 
&lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"&gt;TIOBE page&lt;/a&gt;
you&amp;#39;ll see that Objective-C started to gain significant steam around June of
last year, coincidentally (maybe not?) when the iPhone 3GS was announced.&lt;/p&gt; 

&lt;h3&gt;Keep your eyes on the ball&lt;/h3&gt; 

&lt;p&gt;Are you playing with Mobile yet? Have you:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Started reading about mobile development?&lt;/li&gt;
&lt;li&gt;Developed a Mobile web site?&lt;/li&gt;
&lt;li&gt;Written and tested a native app against a device emulator/VM (iPhone, Android, WebOS, WP7)?&lt;/li&gt;
&lt;li&gt;Written and deployed an app to your own mobile device?&lt;/li&gt;
&lt;li&gt;Published an app on the market?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It&amp;#39;s not like you will find yourself out of a job if you don&amp;#39;t get into mobile
but for many developers, from software shops to corporate environments, sooner
or later a request for a mobile product or a mobile version of an existing
one will swing by your desk.&lt;/p&gt;

&lt;p&gt;It&amp;#39;s an exciting time. Once again you have the chance of taking the lead
and play an important role in your team by staying ahead of the game. 
Remember when you started seeing request for Ajax and fancy UI&amp;#39;s in
your web applications. Remember how you were one of the few that
knew anything about it in your team? Same thing here. Only much bigger.&lt;/p&gt;

&lt;h3&gt;What I&amp;#39;m looking into&lt;/h3&gt;

&lt;p&gt;There are two different fronts that interest me in mobile development: 
Native Android apps and Mobile Sites. I&amp;#39;ll explain.&lt;/p&gt;

&lt;p&gt;The time I spent in Objective-C and XCode in the past was enough for
me to know I&amp;#39;d be grinding my teeth and blowing off steam every single
day if I wanted to develop for the iPhone (it&amp;#39;s probably just me, I can live with that admission.)
Besides, I don&amp;#39;t like the idea of an approval process before I can give away or sell my apps.&lt;/p&gt;

&lt;p&gt;Windows Phone is something that I&amp;#39;ll have to wait more and see what
kind of traction it gains. It also has the approval process issue. The
big plus will be the development tools, which I think will better than
iPhone and Android.&lt;/p&gt;

&lt;p&gt;All that, combined with the enormous momentum that Android has, made
me start coding for Android when it comes to native apps.&lt;/p&gt;

&lt;h3&gt;Don&amp;#39;t forget Mobile Web&lt;/h3&gt;

&lt;p&gt;Native mobile development is fun and rewarding but let&amp;#39;s not kid ourselves.
History shows that businesses will favor the simplicity of web development.&lt;/p&gt;

&lt;p&gt;I went through that transition period when custom desktop application
development quickly lost market to web applications. And that happened
in a world where Windows was virtually in every workstation that mattered.&lt;/p&gt;

&lt;p&gt;Now imagine the mobile scene, where there&amp;#39;s more than one big player, none
equivalent to what Windows was back in 1998. Do you really think anyone
will want incur the cost of maintaining 3 or 4 different native 
versions of each mobile application that we will start cranking out
like we do web apps today? Native apps will probably be the minority,
for environments where you have the luxury of dictating your end-user&amp;#39;s
choice of mobile device.&lt;/p&gt;

&lt;p&gt;Didn&amp;#39;t we just spend the better part of the last 10 years trying to get out of 
a certain single-browser paradigm? Do we want to repeat that mistake?&lt;/p&gt;

&lt;h3&gt;Moving to HTML5&lt;/h3&gt;

&lt;p&gt;Why is HTML5 so important in Mobile and not as much in the standard Web yet? Well,
for one there is a greater percentage of HTML5-capable browsers in Mobile
than on the desktop browsers. Android, iPhone, WebOS (and soon BlackBerries) 
have WebKit browsers. &lt;/p&gt;

&lt;p&gt;With things like richer forms, offline support, canvas, video and the
Geo-Location API (not really HTML5 but present in those WebKit browsers) we
can build really capable mobile web apps. Not just small screen
versions of the regular web apps.&lt;/p&gt;

&lt;p&gt;To be very straight forward about it, the way I personally see it is
that HTML5 is where the bulk of the mobile development will happen in the Enterprise and
consumer-facing applications.&lt;/p&gt;

&lt;p&gt;Maybe something like Flash, AIR, or Silverlight makes a run for their
mobile money too but with all the bullying from Apple and diverging
opinions everywhere, that&amp;#39;s not something I&amp;#39;m spending time on right now.&lt;/p&gt;

&lt;h3&gt;Native or Web?&lt;/h3&gt;

&lt;p&gt;Both. But definitely much more of the Web kind.
&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=60619" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/sergio_pereira/archive/tags/Development/default.aspx">Development</category><category domain="http://devlicio.us/blogs/sergio_pereira/archive/tags/Mobile/default.aspx">Mobile</category><category domain="http://devlicio.us/blogs/sergio_pereira/archive/tags/Android/default.aspx">Android</category><category domain="http://devlicio.us/blogs/sergio_pereira/archive/tags/HTML5/default.aspx">HTML5</category></item></channel></rss>