Mobile App Development Options

Lately, I’ve been in a mobile-app-development phase. I have a couple of ideas for some mobile apps and wanted the easiest way to develop them. Here are the current possibilities:

  • 100% Native
    You can build a native mobile app that looks great and performs well but you have to develop in the language required by the platform. iOS uses Objective-C. Android uses Java. And Microsoft and others use other languages.
  • 90% Native
    You can build mobile apps for many platforms (iOS, Android, etc) using just Javascript if you use the Appcelerator Titanium SDK.  The SDK provides a bridge to over 3000 native commands so your apps look like native apps and perform almost just as well. eBay’s mobile app uses Appcelerator Titanium and this is my preferred choice.
  • 10% Native
    You can build a mobile app using HTML, CSS, and Javascript which is basically a small website. This website then gets wrapped using PhoneGap which turns it into an app. PhoneGap also provides hooks into 10 or so device features such as the accelerometer, geolocation, camera, etc. While this is probably the easiest approach, it would be difficult to make your app look like a native app and it would be even more difficult to make it perform like one.

SSH and SFTP Clients for Windows

When I first started using SSH on Windows, I used PuTTY, which seems to be the most popular. However, I noticed it was lacking in so many ways. So, my current Windows SSH client of choice is ZOC. It’s not free, but if you use SSH a lot, then it’s worth it.

I also used to use FileZilla for FTP but now I’ve found WinSCP to be better. It supports synchronized browsing, file transfer presets / masks / filters, local and remote synching of files, and much more. It’s free.

Password-less SSH Authentication with PuTTy and Key Autoloading with Pageant

http://www.ualberta.ca/CNS/RESEARCH/LinuxClusters/pka-putty.html

http://www.dailyiteration.com/howto-passwordless-ssh-authentication-with-putty/

http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html+

Note that in order for SSH authentication to work, you often need to set your .ssh folder and authorized_keys file permissions to specific values. Here are settings that I used that worked:

drwx------   2 ayahya ayahya  4096 Jul 13 14:23 .ssh
-rw-r--r--  1 ayahya ayahya 875 Jul 13 14:23 authorized_keys

Your private keys should always NOT be readable/writable by anyone but you

-rw------- 1 ayahya ayahya  951 Jul 17 14:00 id_rsa

Cloud Databases with REST API

Here are some cloud databases with REST API services that make building a web / mobile app with a backend database super easy.
Apigee Usergrid
1,000,000 requests per hour for FREE
Kinvey
1,000,000 requests per month for FREE
MongoLab
https://mongolab.com
240MB FREE
StackMob
60,000 requests per month for FREE
Parse
https://parse.com
1,000,000 requests per month for FREE
Google Cloud Storage
Not free
I went with Parse because it was the easiest to use.

HTML, CSS, & Javascript Frameworks

When developing a website, you often find yourself doing a lot of the same coding. Here are two nice HTML, CSS, and Javascript framework to get your going quickly.

FOUNDATION
http://foundation.zurb.com/

BOOTSTRAP
http://twitter.github.com/bootstrap/index.html

In addition, don’t forget to check out these HTML5 boilerplates which can come in pretty handy.

http://html5boilerplate.com/

http://html5boilerplate.com/mobile

Javascript: event.preventDefault + unbind

Let’s say you have a form and you want to prevent the default action of submitting the form from occurring when the submit button “submit” event is triggered. After the default action is prevented, however, you want the default action to occur. You can do that as follows:

$("form").submit(function(e) {
	e.preventDefault();
	/*  do something */
	$('form').unbind('submit').submit();
});