Phonegap is not ready yet.

This may sound like not true, but actually Phonegap(Cordova) is not ready yet for the prime-time. The point is something or the other will always get in your way if you try to do a little more than basic UI.
It’s a pity to see that Phonegap has reached a version number of 3.3, still feels uncomfortable to work with.
While for a basic static page navigation it may be a solution to go for, for mobile, but think twice if the UI is becoming even a little more than basic.

A simple childbrowser (inAppBrowser) is failing in the current version and I found people are finding workarounds or solutions to fix this. So the point is not that its fixable but its not dependable.
Again, from version 3.0.0 on-wards, one need to have an internet connection to start building! Well, its NPM and NodeJS, I know, but its not comfortable at all rather confusing.

The best Phonegap version as I know is 2.8.0. Its the stable of all.
If at all you are trying to develop on Phonegap, stick to this version(2.8.0) until they release a stable version again.

Happy coding.

Internet will change again

If you remember those days, when one has to wait for an email to open, then for sure you know that its changed now. Not only fast internet, but the central delivery system, has changed from one server to cloud servers. And that is perfect for the problem in hand. Now all the data is residing in someone’s server(ok, cloud server). In the beginning, it felt perfect as it syncs to all the devices and one seamless experience for the user. With this, comes the security breach and that has already showed its effect in last year.
Fortunately, world is a better place. Individuals and startups have already acted upon this. There are so many cool products and services being tried last year that we may start to see the fruits starting from this year.
The philosophy has changed from “mobile first app” to “offline first app”, from “connected app” to “noBackend app”, its a revolution again.
The very chances are the experience may remain the same for the user, but the underlaying data and functionality of the applications are going to change again as it changed first from single server to cloud servers, now it would be single again, but only for your own data (So, it would be Re-Decentralizing).

redecentralize : taking back the net

Well, exciting beginning for the year. Below is the list of, some of the many initiatives, which will change the internet again.

arkos.io : Your data, your rules.
sovereign : build and maintain your own personal cloud
Ansible : Ansible is the simplest way to automate IT.
mailpile : A modern, fast web-mail client
Lima : Lima unifies the memory of your devices so they can act as one. Just for you.
owncloud : self-controlled free and open source cloud.
cozycloud : your personal cloud
Cozy: A personal Cloud you can host, hack and delete

Redecentralize ยท taking back the net

offlinefirst
nobackend

Backendless
deployd, THE SIMPLEST WAY TO BUILD AN API.
Firebase
Hoodie, VERY FAST WEB APP DEVELOPMENT
Kinvey
Parse
remotestorage, An open protocol for per-user storage
sockethub
unhosted : freedom from web 2.0′s monopoly platforms

This interview with Mailpile founder seems a nice start if you are wondering whats coming in near future.

Happy new year,
Cheers

My first Tizen store approved game

Its a pleasing experience to get something on the stores, which are more stricter or unknown. Being said that, it is exciting when something is out of the doors from those stores. It was the same feeling for me when my first Apple store approval has happened.
So the game which was written for iOS devices is modified to fit in all the platforms and released. The original “catch them all” game is ported to all the platforms with the help of OpenFL and HAXE. The name has been changed to “Catch Them All E”, “E” is for everywhere.
First, it was for the Tizen App Store and the wait. Its not much but have to wait for 3 days and finally its approved and available in the Store. Thats such a nice experience and could not have been possible without Joshua.

Well, then I did some modifications and ported it to HTML5. Though, OpenFL directly provides conversion, there are still things to consider while developing for different platforms. This version is available here.

Not too far behind, I ported it to iOS and submitted Apple store. Well it took 7 days and its on the Apple App store too.

I must say, without OpenFL and HAXE I could not have achieved all this.

Getting git gui back on OSX Mavericks

I have been using git and its default gui with

git gui

for almost from the beginning of my git usage. While everything was smooth for a long long time, recent update to OSX Mavericks, broke that experience. Well, for a new OS, its good that they have already installed a version of git with the OS itself, so new comers do not have to worry but just use git. But this git is from Apple and does not have the default “git gui”.
Now following the old method, I tried to install git again by downloading it from
git-scm site. While everything went well and the install was smooth, I still does not get “git gui” from the command-line.
The default Apple-git was firing up always instead of the “git-scm” version. The trick here is to add the “git-scm” version to the system path. Now that can be done in many ways for a MAC, I did it, by modifying the file “.bash_profile” (dot bash_profile) the name begins with a DOT and its a system file present at the “~/” location.

The paths in OSX may be surprising at first if you are coming from windows environment, but just remember
/ -is the root folder of the OSX
~/ -is the root folder of the logged-in user

The line to add in the end of the file, is as below

export PATH="/usr/local/git/bin:$PATH"

Thats all, I closed the Terminal window and re-opened it to get my favorite “git gui”.
Happy Coding.

Social plugin for Phonegap 2.6 and up

In my search to have the iOS 6 default social sharing plugin, I landed up at this page. While everything seems right for this plugin, I somehow faced some problems in the UX. Thought would look a little deeper into it and found that this plugin relies upon the old plugin architecture of Phonegap. It still works, but then if it does not, you know know why.
Now to implement social sharing in my project, I have done a quick round of update to the plugin. Its working in my phonegap version 2.6. And that should work on Phonegap 3 as well, as the new plugin implementation has not changed after version 2.0.
Here is the github link for the new plugin.
While currently this plugin only shares the link and the message, you have to send a third parameter as an empty string for the image parameter. I will do the code cleanup and fix as I get some time to look into it. For the time being, its ready to use in new Phonegap versions.

Happy coding :)

GruntJS for CSS minification

With GruntJS, as we saw in the last post, we can minify javascript files, the next in line is the CSS files.
I have updated the Github repo for using CSS along with Javascript files.
The basic setup is not different from javascript setup. Here we have to use

grunt-contrib-cssmin

The confusing part is, for minification we have a lot of options in NPM, and one of them is

grunt-contrib-mincss

So at first I was confused and it did not work for me. Seems like “mincss” is old and have not been updated for a long time. So I am with “cssmin” and that just works.
As usual, install cssmin locally, with

npm install grunt-contrib-cssmin

A note is, if you have “package.json” and “Gruntfile.js” file in the same location, take those files somewhere else while installing new packages from NPM, else it throws some errors. Once installation is complete, bring those files back and that should work as it was before.

Happy grunting.

Introduction to GruntJS

Developing in Javascript (in that case for frontend web-development) always feels manual provided you came across this nice library called GruntJS.
As the name suggests, it takes the grunt work out of the developers workflow. The repetitive and manual tasks could be automated with this nice library.
GruntJS requires NodeJS. Well, actually it does not require, it works on NodeJS. So the basic to get started is NodeJS. Once NodeJS is installed, one need to install GruntJS, locally per project. As of version 0.4, it is advised to uninstall the globally installed GruntJS module.
Must haves :
1. NodeJS installed
2. GruntJS installed locally.
3. Must uninstall GruntJS globally (if its already installed globally).

npm uninstall -g grunt

Link to the NPM Grunt package is here.

There we go, the basic setup to get started with our grunt work. Now to work with GruntJS, we need two files, which are as below;
1. Gruntfile.js (previously it was called grunt.js)
2. package.json
These two files are to be present right next to the locally installed GruntJS NPM module rather its the other way round. After deciding a place for GruntJS setup, in your work environment for the project, install the NPM modules locally in that folder. Next we can make these two files in the same folder.

The last and most notable task is to install the dependent task packages locally. These are the tasks we want to give GruntJS. For example, if we want to minify a JS file using UglifyJS, then we must install it locally for the project before using it.

npm install grunt-contrib-uglify

Finally, to fire up the grunt work, open the command prompt and navigate to the folder where we have the above two files and type;

grunt

Here is the github link to the setup, if you want to directly jump into the code.

Thats all, keep the grunt work to GruntJS.
Happy coding.

OpenFL is here

The NME or haxenme project is taking a mature shape. The library is now known as OpenFL, which can be assumed as the successor of NME. Actully, OpenFL does use NME behind the scenes.
So, if you are working on NME projects for sometime now, its time to shift to OpenFL.
A true cross-platform library over a true cross-platform language ie; HAXE.
The new site is up at http://www.openfl.org
The other links are as below
Download home
API documentation

The main difference one would see, by coming from NME is most of the packages are now in “flash” not the default “nme”. This is to make it consistent with flash API and at the same time, the add-on APIs are on “openfl” or in the respective packages.

Happy HAXE ing

A Record is now on Play store

Continuing with my Cordova ( Phonegap ) exploration, I pushed a new Android application to Google Play store.
splash
The application is to record audio. Start the application, press the record to start and press again to stop. You are done with recording and audio file is stored in your local file system.
The application is again a standalone application and does not require to connect to internet. So its private, secure, offline and yours.

As usual, its open-source and the source code is in github. Would love to listen back your take on the application.

My first Android application on Play store, The Address.

theAddress
This is exciting to get my first Google Play store application. Previously I worked on some Android applications, but nothing was up there in the Play Store. For me its really a different experience pushing it to the Play store. Unlike pushing to Apple App store, the Play Store push feels like no brainer.
Now, talking about the application, its a personal note taking application for an absolute necessary address. This application does not require internet connection at all. Its a pure standalone application on its own. Its private to the user.
Open up the application, fill out the form to add an address and save it. Thats all it does. Once you come back to get the address, it shows upfront the saved address. Incase you are done with the currently stored address, update the form with a new address and save it. It does not store history of your previous addresses.
Now the implementation is done with Cordova (phonegap) 2.7 , jQuery 2.0 , jQuery Mobile 1.3 , lawnchair and GASP JS(GreenSock Animation Platform for Javascript). Its completely opensource and the code can be found at Github.

Looking forward to listen from you all.