Sunday, April 14, 2013

Deleting Picasa photos from Nexus 4

   Hi all,

  Recently I received a Nexus 4 device. I logged in into my Gmail account and it popped me a list of what all from Google Account should be synced to my Nexus 4 device. I accidently also asked the device to sync all the photographs from my Google account to the device.

   A few days later I realized this and I wanted to remove all the photographs that were synced. I disabled the photo sync in my account on the device and went to the gallery app to manually remove the photographs. But what!!!

   There was no option that would let me delete the pics from my Nexus 4. I quickly searched the web to figure this out, I found a couple of links but did not find it useful. Many people were getting confused from deleting a photographs on the device versus deleting the synced photographs.

Here is how I figured out how to remove the picasa photos from Nexus 4.

Settings -> Apps -> All.

Scroll down until you find the Gallery app in the list.
Click and open it.

It will show you something like this.

Just click on "Clear data" and all the locally stored Picasa photos will be deleted from your Nexus 4 device.

Hope it will be useful to you.

Friday, January 18, 2013

Completing an year at a startup

   Hi, I am back here after many many months. Had been busy with the work, tinkering and lately talks.
This is September. I have completed a year at the start-up named IntouchID ( currently Volare Technologies). Thought, it would be great to share my experience and lessons with you all.

Do what you think is right.

  Before working with IntouchID, I had a fairly stable and a secure job with amazing people working with me. But for my own reasons, I was not satisfied. I knew I am doing something wrong to myself. I had this urge of working on better technology, better team, still better products and top of all, learn more, faster. One day I found out IntouchID. It was a very early stage startup (4 people at the time of writing this blog post), rather it was a one person company, my boss. If I would join in, I would be the first employee. The job seemed insecure, unstable.

    But I was fascinated to work there. I was not ready to take risks, but thought, if not now, then when?
So the risk factor was eliminated.

Then I went to some friends who worked at moderate to absolute corporate companies. I wanted to seek advice from them. Everybody had a different say,
     'do not leave your secure job',
     'what is the guarantee that such an early stage startup can even pay you!'
     'what makes you think that such a startup will last even for an year.'
     'dont be an idiot, they dont have revenue',

They were not wrong.
Some just kept quiet, knowing that I was anyway going to do what I thought was right.

I moved ahead to take advice of some senior friends. One suggested me an important thing. His words are still in my mind.

    'Something that you will learn at a start-up in six months, you will not learn at a corporate even in a span of two years'

This advice made it's mark. I needed it, because I needed learning. I know how badly I performed at engineering. The damage was done. I badly wanted to repair it. I should not bother taking risk for the sake of learning.
So my mind was all set.

Doing doing. Learning learning.

    I was not satisfied with the way I became an engineer at PICT. It was the time, I did not clearly understand the concepts in computer science, nobody ever could succeed in bringing the 'wow' feeling in me about Computer Science. By now I had already gained all the interest in building software. This was another reason for me to join a start-up. Learning.

Startup is about building things and then measuring how it performs in public, take its review, find out what works and what does not, build again and repeat. One thing I hate here is if something does not work, you make it work, this way or that way. And when it starts working, you just dont have enough time to bother, how exactly it is working. Not all the time, but this happened with me many time. I am really sad with this approach for development. But due to lack of time and having a lot to ship, I have to do it. :(

Joy of building things

  Ever since I was a kid, I had a keen interest into building things. I used to dismantle my electronic toys and assemble them with some defunct pen-refills, paper pins, mini-motors and couple of battery and build something atop it. I still vividly remember and have a small crane that I had built out of some toy I had bought from the junk yard.

   Startups are like my childhood. Looking back at my engineering, I had an urging desire in me to go back and code in C++. Lately BlackBerry10 is due its launch in January. Thought, how about building sometime for it! I started working on IntouchApp for BB10. I worked hard, 3-4 hours at night including full weekends to finish the basic version of the app. Later my boss would also lend his hand to speed me up. That was lot of hard work.  Finally the app was submitted to Blackberry App World.

   When I took the screenshots of the app to submit it, I was so fascinated. Could not stop but stare. I emailed those screenshots to many of my close friends. I had that great feeling in me that I built it with all of my struggle, hard work and determination. A great thanks to my boss for keeping me motivated.

   The pleasure you get when you look at your creation that looks beautiful and works like a charm is priceless.

Friday, June 29, 2012

HTML5 support on Android 4.1

Hi HTML5 folks,

  If you are a regular visitor, you might notice that I had posted HTML5 Support on Android 4.0 when ICS was just released by Google.

   This time I am back with HTML5 support on Android 4.1 Jelly Bean.
Sadly, I have taken the snapshots from the emulator and I am posting it here. Note that here I am talking about support of HTML5 on stock browser of Android.

Tuesday, April 24, 2012

Implementing HTML5 CORS on the server.

Hi all, I am here once again with some small hack for you all.

You, as a web developer, might have sometime come across a point where you might have needed to fetch some resources from a server with a different domain name as that of others.

You might have resorted to implementing proxy or resorted to a hack called JSONP.

Now, theres no need to take all that hassel, The goodness of Html5 has brought to you something called CORS(Cross Origin Resource Sharing.)

    But there is 1 downside to CORS
1. You need to have control over the server, but thats not a big deal, you need to have JSONP enabled on server either when using JSONP, same for proxy, you have to have something on server.

thats ok for now, I have seen many people who work with multiple domains and all of them have been under their own ownership. Like we have at my workplace.

ok, getting back to CORS now, heres what you need to implement on the server side, in order to get it working.

a simple header  in your HTTP Response.

                        "Content-Type": "text/plain",
                        "Access-Control-Allow-Origin": "*" //CORS implementation.

Putting '*' as the value of the header will allow any origin to make a call to your domain from withing a CORS supporting browser. If you want to restrict the domains which can make a CORS call, separate them by comma, like this.

                        "Content-Type": "text/plain",
                        "Access-Control-Allow-Origin": "," //CORS implementation.

This is the example where I have implemented CORS when I was playing with my api on, which might be disfunctional at this time, coz I have built it just as a part of play, nothing else.

I hope that you have got an idea now.

in case of any quesiton or comment or criticism, feel free to write down below.

UPDATE: Some more sample code on Github

Thanks & Cheers,
Have fun.

Friday, April 20, 2012

Code to use Google Docs as database

Sometime back, I had this post about using Google Docs as a database in cloud.
It was, however, only for HTML5 applications.

    I have recently moved that repository to Github and made some changes in the code too, in order to make it readable and understandable.

Download the latest code from there.

have fun.

Sunday, March 4, 2012

How to inhibit caching AppCache manifest.?

Hi all,

   So I am back with some new stuff related to HTML5's fantastic feature called Application Cache or sometimes also referred to as AppCache.

   Application Cache is one of those crazy features which, when I read about it, once again, drove me insane about internet and technology.

A bit of what AppCache is: AppCache is a HTML5 feature which allows chosen resources to be cached entirely into the users browser. Whenever the user visits your website next time, the resources are served from the Application Cache rather than making a HTTP request and fetch them from the server.

This feature can be used to greatly enhance the performance of the web application and save users bandwidth. All static resources like images, css and javascript libraries are suggested to be cached.

  There is a manifest file which specifies which files to be cached in the users browser. The scenario may get worse if the manifest file itself is cached at the users end. So its of utmost importance that user's browser always requests the manifest file to the server. I have listed 2 ways to force the user's browser to do so.

   Imagine the case when the manifest remains cached into the users browser. Whenever the user visits your website, all the resources are served to him from the Application Cache and no request is made to the web server to fetch the changed/updated resources. And this goes on and on until the user the user clears the cache. And you would not like your users to take this hassel, will you? On mobile devices, this scenario gets very difficult to detect and debug.

So I did some web research and found out 2 ways to inhibit caching of manifest file into the users browser.

1. Setting 'Expires' HTTP response headers to least possible time.
- url: /(.*\.(appcache|manifest))
  static_files: \1
  mime_type: text/cache-manifest
  upload: (.*\.(appcache|manifest))
  expiration: "0s"
Explanation: For those who are new to this, in simple language, 'Expires' is a field in HTTP response from the server. 'Expires' tells the client browser that the particular file should be server from the browser cache, until it is as old as the time specified. So in this case, if we set the time to 0 second, whenever the user visits your website, his browser will make a request for a new manifest file and discard the one already in the browser cache.

2. This is the other way to request the manifest file to the server every time your website is visited, but I will not recommend this approach, as it interrupts user and asks to refresh the page.
window.applicationCache.addEventListener('updateready', function(e) {
  if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
    if (confirm('A new version of this site is available. Load it?')) {
}, false);
Explanation: When the user visits your website, the resources are downloaded in the background after the page is loaded. When the user visits the same website again, the resources are loaded from the AppCache and the resources which are changed on the server are downloaded in the background. To see these resources, thus, user must refresh the page. The above code forces the user to refresh the page programmatically

Saturday, February 25, 2012

Some useful IntouchIds

   Few days back my boss dropped me an email. I dont remember what was it all about, but at the lower half,
I found a list of some useful IntouchIds. Just wanted to share them with all of my followers.
Click the link and add them to your contacts right away. :)

See you soon with some technical talk.
  1. Pune Airport*IN.AIRPORT.PNQ
  2. MSEB Pune
  3. BSNL Pune
  4. Pune Traffic Police
  5. Rickshaw Complaint (Pune RTO)
  6. TastyKhana: Food delivery service in Pune
  7. AyAuto: Dial auto rickshaw in Pune*IN.PN.GO.AYAUTO
  8. Autowale: Dial auto rickshaw in Pune
  9. Millenium National School, Pune
  10. LingerOn cafe: Baner Road, Pune

Wednesday, January 25, 2012

What is special about Node.js?

   I am not a Node.js programmer, but an aspirant to give it a try and try to do some real time stuff. Few days back, I came across this link on wired Theres are lots of things given in that link, but I have copied the best lines which I think is the best summations about Node.js

       Node is the successor to Ruby on Rails, the programming framework that made it big when Twitter made it big. “First there was C, which Amazon was written in,” he told us this past spring. “Then there was Perl, and Craigslist was written in Perl. Then there was PHP and Facebook, and then Rails and Twitter. With each of these things, they solved a lot of hard problems, but then new problems arrived. Node solves the next set of hard problems, the problems that come with all this real-time stuff.”

I have been a great fan of real-time things. Also I was amazed when I saw Google doing real time analytics at Google Analytics. Since then, I am just tapping my feet to get Nodejs running of my laptop and have a taste of it. Hope the above paragraph was useful to you.

See you again soon.

Monday, January 16, 2012

Comman line error in BlackBerry app development

Hello all, not much to share with you all, but some serious but silly problem that bugged me for a while. I was trying to create a simple BlackBerry project, HelloWorld and I faced with an error when I started running the project.

Command Line Error - BlackBerry Smartphone Simulator
Unknown option: World
Try "fledge /help" for command line help.

Later I found the solution on Google.

Just remove any spaces from your project name. Thats it.

This is a silly thing that RIM allowed to pass in into BlackBerry JDE plugin.
anyways, see you soon with some new stuff.

Sunday, January 8, 2012

Growing your contact network on IntouchId

Hi folks, its been a great time to see ya all.

  Today I am going to talk on something really different. Its not technology, its not programming, its not some kinda break through that I have done. But its about a small innovation, which I believe should grow out and become a de-facto standard of sharing contact information between people.

   Image even in the world of Quad Core smart phones and tablets, we still exchange contact information like an idiot. One guy asks the other for his/her cell no. then the first one types and missed calls the other one and then they save the numbers, that too in a static manner. Tomorrow either of these guys looses the number and they again exchange the contact information in the same static way.

     I mean, common man, we are all living in 2012. Here phones are smarter, TVs are smarter, even Web is smart enough to work, even in the situations of absence of Internet connectivity.

ok, so what exactly is this magic, I am going to talk about. Its the magic.

What is IntouchId?

IntouchId is a great way to share contact information and stay intouch with people forever.
No matter how many cell phone devices you change, no matter if your phone contacts are lost or entire phone is lost.

   And at the top of all, its not only about phone nos. Its about
1. Emails
2. Addresses
3. Contact Notes

They have mobile apps for almost all types of mobiles, Android, Apple iOS, BlackBerry, J2ME and Nokia's Symbian. In addition to this, they also have browser plugins to view your contact information from within the browser.

Beside, IntouchId also creates event pages which help you connect with people you meet at different events and share contact information with them.

Hope you have got an idea of what exactly IntouchId is. If you have any questions, feel free to throw them up in the comments.

Saturday, November 26, 2011

Using Google Analytics with HTML5 or PhoneGap apps

   Hello all, this time I am back after so many days and have brought with me some cool stuff related to HTML5 and PhoneGap mobile web applications. I had been going thorugh Google Analytics SDK for Android and figured out that they have a really cool way of tracking app usage of Native android apps.

   What about mobile web apps developed using HTML5, CSS and Javascript or say PhoneGap.?

:(  :(  ;(   .... !#*"&!)£+=$;^"%.... developers cry.

Putting the javascript code provided by Analytics Dashboard does not work in case of Android web applications. I have already tried it.

    So I begun my challenge of achieving this. I wrote a simple app which had a couple of couple of HTML pages in it. To get such an app running into the Android mobile device, we essentially create a WebView component and then load the first HTML page of the app into this webview. Then the user is good to play with your application.

   Now getting back to the Analytics tracking of this web app, I used the code provided by Google here.
   So the code becomes somewhat like this.

public class  myWebApp  extends Activity{

      Webview mWebview;
      GoogleAnalyticsTracker tracker;

  protected void onCreate(Bundle savedInstanceState) {

        tracker = GoogleAnalyticsTracker.getInstance();

        // Start the tracker in manual dispatch mode. The following UA-xxxxxxx-x code must be replaced by //your web property ID.

       tracker.startNewSession("UA-xxxxxxx-x", this);

       mWebview = new WebView(this);
       mWebview .setWebViewClient(new myWebViewClient());
       mWebview .loadUrl("file:///android_asset/www/index.html"); 

    private class myWebViewClient extends WebViewClient
        //After the user visits a particular page, send the tracking notification to GoogleAnalytics.
         public void onPageStarted(WebView view, String url, Bitmap favicon)
tracker.trackPageView( mWebview.getUrl());


On the similar lines, PhoneGap also uses the WebView component to get the app running in Android. So the same code(or little bit modified) can be used to track user engagement in the PhoneGap applications.

    This feature should be used to determine the user engagement into your application and nothing more than that. It will help you figure out which features of your application are used more by your user and enhance the user experience, user interface of such features.

Note: You should ensure that your application conforms to the terms and policies of Google Analytics.

Thursday, October 20, 2011

HTML5 Support in Android 4.0

Hello Android folks and mobile freaks, just about a day before I came to know that Google has shipped out its long watched Android 4.0 aka Ice-Cream Sandwich operating system for mobiles as well as tablet devices.

     Thought it would be great to take a ride on Android 4.0 browser & test out its support for HTML5. Just fired up some code and found out that there are some good improvements in 4.0 browser.


Javascript APIs

Input attributes

Input types


Sorry for posting the snaps directly this way, but had been busy with work, anyways, the purpose is conveyed. Feel free to share the article as well as above snaps.

Sunday, October 2, 2011

Using Google Docs as database in cloud

Hello all,

 sorry for long awaiting, just had been busy with work, as usual.

For sometime back, I was looking for something using which I can control the data on client applications. I could definitely host a server for this and it could get me the work done, but that was not what I wanted.

   I wanted to achieve this without hosting a server, I thought, why not use Google Docs as a database and get done what I want.

In the sample project that I have created for you people, I have used Google Docs as simply a READ_ONLY database, I did not explore into how to use it on READ_WRITE mode. So this is the limitation you people are going to face.

  Now all I have to do is just change the data on the spreadsheet in google docs and my client application gets the updated data in a while. But please note that, this takes some time for data to appear on the client, for me it once took entire one day.

Heres the download link for the sample project, which is hosted on Google Code website.

Tuesday, September 13, 2011

One look at BlackBerry App Development

Recently I happened to take a look at BlackBerry mobile operating system while I started developing some applications for my day job.

   And to the astonishment of myself, I discovered that it is a fabulous operating system. I just wonder why has it not attracted the developers' attention as yet. Some of the key features that I would like to enlist here are:

  1. Great documentation with embedded code samples.
  2. Pretty good device emulators and enough of them.
  3. BlackBerry OS 6.0 exhibits Webkit based advanced browser.
  4. Extensive API to do almost everything.
  5. Free App Developer registration.
  6. Monetization through ads.
  7. App Developer gets paid in Paypal account(which is a great feature over Android Market, where app selling is not allowed in lot many countries.)
     Also, as now I have got into BlackBerry, I was curious to know where are they heading these days. BlackBerry OS 7 is currently in Beta and it is also one of the good and promising mobile OS(I dont say that it will take over iOS or Android, but definitely RIM can breath with this OS flavor in the market for a while.)

 One of the great things with BlackBerry now, is that they provide Webkit based advanced browser, which greatly supports mobile app development frameworks like JQueryMobile and Sencha Touch. Again this is great opportunity for Cross-platform or Hybrid App developers.
    I dont know to what extent BlackBerry will attract developers, but looking at OS 7, better documentation, better and alive official forum (as opposed to Nokia's) and support of Standards based web browser will definitely play good for their recent future.

Thursday, August 25, 2011

HTML5 Application Cache Tutorial

Hello all, not much time to talk about. Here straight way we goto the tutorial of HTML5 Application Cache. I hope u know what it is and how useful it is, if not, I will tell you in short.

Application Cache or AppCache is HTML5 feature using which whole or a part of website can be made available offline. It has following great advantages.

  • Make your web apps available offline.
  • Load your web apps faster.
  • Reduce the server load.
  • Save bandwidth.
There are some changes to be made on server in order to provide support for AppCache.

   If you are using Apache, LAMP, WAMP, MAMP or any other server based on Apache, follow the steps below.

1. Goto appropriate installation directory or search for httpd.conf file.
2. Add 'AddType text/cache-manifest .appcache' to it and save the file.
3. Restart the server.

Or if you are using Google App Engine. Put the following code in your app.yaml file.

- url: /mystaticdir/(.*\.appcache)
  static_files: mystaticdir/\1
  mime_type: text/cache-manifest
  upload: mystaticdir/(.*\.appcache)

Now you are set to use AppCache for the content hosted from this server.

Download the AppCache Demo Project from here and open index.html

Use Google Chrome to study this sample application. In Chrome browser press 'Ctrl+Shift+I' to open Chrome Developer Tools and click on resources tab. When the index.html downloaded from the above project is loaded in the browser. You should see something link as shown in the picture.

cached resource from your localserver

Now just open the cache manifest file and change the version no. in it. Make some change to the already cached files and click refresh in the browser. The newly changed file is cached again.

Application Cache can be used by mobile phones also to make web apps more responsive. Android 2.2 and above supports HTML5 Application Cache.

Update: You can check out what has been cached and what not in your Chrome browser by typing 'chrome://appcache-internals' in the address bar.

Update: If you want to check support for various HTML5 features in your browser, you can use the following Apps.

Chrome App
Android App


Related Posts Plugin for WordPress, Blogger...

Share This

Share |