Thursday, July 17, 2014

My Research - Push Notification in Mobile Ecosystem in 2011 - Gotchas - Part 9


Finally  the last final part telling about reliability of Push notifications.



Push Notification Gotchas
                      
 
 Push Notifications needs internet or Data connection!
Your recepients need to have data connection or internet on their phone to receive push notifications. You can not  identify the reason why your recepient didnt receive it.
 

Push Notifications Are Short!
You can only send limited data over push notifications. You need to have extra mechanism to pull more data from server.

Push Notifications Are Unreliable!
They are not reliable! There is no guarantee that push notifications will actually be delivered,
even if the APNS server accepted them.

They can be expensive!
Adding push functionality to your app is fairly easy and inexpensive if you own the data, but can be expensive if you have a lot of users or data you need to poll.

My Research - Push Notification in Mobile Ecosystem in 2011 - Whats in Market - Part 8



Whats In Market

Various Push Apps on Apple Iphone

Update: I have taken this from some other article as it is. 'I' or 'me' used below is not 'sandip'

Market Pulse

While the apps that currently use push notifications are handy, I hope that developers will take this opportunity to do some things above and beyond your typical “message waiting” notifiers. E*Trade, Zillow and a few others get the idea. I’m waiting for the app that allows me to get notified of anything I decide I need to be notified about. With all the open APIs out there today, it’s bound to come along.

Things that need to be pushed :

1. Allow me to be notified when my car or house alarm goes off.
2. Google, let me be notified of a new Google Alert I have set up.
3. How about instead of giving me a big vibrating brick of plastic at the restaurant while I wait for a table, let my phone connect to your system and you can ping me instead.
4. I’d also like to know immediately when albert hits another grand slam – or when any other sporting event I’m interested in occurs.
5. What about when I need two days of rain-free weather, within specific degrees, in order to paint a fence or deck. Should I really have to check the weather forecast every day? I’d rather have an app that did the work for me.
Sooner or later, push notification of almost anything will be a reality, making our digital lives even more real-time. What type of alerts would you like pushed to your iPhone?

My Research - Push Notification in Mobile Ecosystem in 2011 - Android - Part 7


Android C2DM (Cloud to Device Messaging) Framework


Here are the primary characteristics of Android Cloud to Device Messaging (C2DM):
  • It allows third-party application servers to send lightweight messages to their Android applications. The messaging service is not designed for sending a lot of user content via the messages. Rather, it should be used to tell the application that there is new data on the server, so that the application can fetch it.
  • C2DM makes no guarantees about delivery or the order of messages. So, for example, while you might use this feature to tell an instant messaging application that the user has new messages, you probably would not use it to pass the actual messages.
  • An application on an Android device doesn’t need to be running to receive messages. The system will wake up the application via Intent broadcast when the the message arrives, as long as the application is set up with the proper broadcast receiver and permissions.
  • It does not provide any built-in user interface or other handling for message data. C2DM simply passes raw message data received straight to the application, which has full control of how to handle it. For example, the application might post a notification, display a custom user interface, or silently sync data.
  • It requires devices running Android 2.2 or higher that also have the Market application installed. However, you are not limited to deploying your applications through Market.
  • It uses an existing connection for Google services. This requires users to set up their Google account on their mobile devices.


Components:
1) Mobile Device
2) Third Party Application Server
3) C2DM servers

Credentials
1) SenderId - developers emailId used during app registration
2) Application ID - app id
3) Registration Id - An ID issued by the C2DM servers to the Android application that allows it to receive messages.
4) Google User Account -
5) Sender Auth Token

Life Cycle Flow
Here are the primary processes involved in cloud-to-device messaging:
  • Enabling C2DM. An Android application running on a mobile device registers to receive messages.
  • Sending a message. A third-party application server sends messages to the device.
  • Receiving a message. An Android application receives a message from a C2DM server.



My Research - Push Notification in Mobile Ecosystem in 2011 - Nokia - Part 6


Nokia Drop -

Nokia provides Push Notification API, supported in latest phones.

The Notifications API makes it easy to add real-time push notifications to your client applications running on Nokia devices. As shown in the diagram below, applications access the Nokia-hosted Notification Server through two separate interfaces that you integrate in your applications:
  • The Service API provides access to the Notification Server through an HTTP REST interface. Your service uses this interface to send notifications.
  • The Client API allows applications on the device to register and receive notifications from the Notification Server. The Client API is available for Qt on Symbian devices. QML support will also be available in the near future.
[Nokia developers website]


Typical lifecycle of a notification

The diagram below shows the typical lifecycle of a notification.
  1. Before an application can receive notifications, it must register with the Notification Server and request a Notification ID. This Notification ID uniquely identifies both the end user and the target client application and is used by the Notification Server to route notifications.
  2. The client application then shares this Notification ID with its respective service; the server now knows where to send the notification.
  3. When a notification is ready to be sent, the service sends it to the Notification Server using the Service API, providing the notification data (also called payload) and the Notification ID.
  4. The Notification Server sends the notification to the client application.




 

My Research - Push Notification in Mobile Ecosystem in 2011 - Apple - Part 5


Apple Push Notification Service

Called APNS in short, also supported by OSx Lion.

The server-side component can send the app a push notification! There are three things a push notification can do:
  1. Display a short text message
  2. Play a brief sound
  3. Set a number in a badge on the app’s icon

Main Roleplayers:
1) Iphone or Mac Application
2) APNS server from Apple
3) Your Notification Server.

What does it need?
1) Iphone Device Token
2) App Id
3) Iphone to be registered with APNS, enabled push notification
4) Your Server registered with APNS
What You need for Push Notification?

An iOS Developer Program membership. - You need to make a new App ID and provisioning profile for each app that uses push, as well as an SSL certificate for the server. You do this at the iOS Provisioning Portal.



A push notification is a short message that consists of the device token, a payload, and a few other bits and bytes.
Example:
{
   "aps":
   {
   "alert": "Hello, world!",
   "sound": "default"
   }

}

Each notification has a maximum size of 256 bytes, which makes it very efficient for services with small data allowances (such as mobile phones

My Research - Push Notification in Mobile Ecosystem in 2011 - Blackberry - Part 4


Blackberry Email Push Notification



The BlackBerry® Push Service is an essential component of the real-time, always-on experience of BlackBerry smartphones. It offers an incredibly efficient and reliable way of sending information to your users. It also allows your application to process information in the background and alert users.


Available to all developers
The BlackBerry Push Service is available to all developers and web content providers. By using push technology, you can make your app more engaging and help turn it into a Super App

My Research - Push Notification in Mobile Ecosystem in 2011 - How - Part 3


How does it work?

1) Mobile Developer will integrate PNS Api In your App.
2) App user registers for Push Notification with OS Provided PN Servers.
3) App user gives your application server access to send Push Notification In-App.
4) Your server sends Notification to  OS Provided PN Server.
5) OS Provides PN server sends notification to receiver application in end device.

How does it look like?



My Research - Push Notification in Mobile Ecosystem in 2011 - What Part 2


What is it?

Push, or server push, describes a style of Internet-based communication where the request for a given transaction is initiated by the publisher or central server. It is contrasted with pull, where the request for the transmission of information is initiated by the receiver or client.[WikiPedia]

For ages, Telecom technology SMS is being used for Push notification, its smpp protocol on SS7 networks. Email is also kind of Push Notification using SMTP.

Blackberry or RIM is using it for longtime for Email Notifications while Apple generalized it Now Android and Nokia are trying put their foot forward to enhance its usage. It primarily runs using HTTP/TCP/IP network protocol.


Genaral Use

Push services are often based on information preferences expressed in advance. This is called a publish/subscribe model. A client might "subscribe" to various information "channels". Whenever new content is available on one of those channels, the server would push that information out to the user. [wikipedia]

Techniques

HTTP Push Server:
HTML5 is the WebSockets API, which allows a web server and client to communicate over a full-duplex TCP connection.
Pushlet
The server takes advantage of persistent HTTP connections and leaves the response perpetually "open" (i.e. it never terminates the response), effectively fooling the browser into continuing in "loading" mode after the initial page load would normally be complete.
Long Polling
Long polling is a variation of the traditional polling technique and allows  emulation of an information push from a server to a client.(comet programming)
SMS
Andriod application can read all received SMS before it goes to inbox.

WebSockets
HTML5 browsers
Mobile OS/Phone leaders are providing Push notification built into their offerings.

My Research - Push Notification in Mobile Ecosystem in 2011 - Part 1


Sometime in 2011, I came to know about push notification being used in mobile ecosystem. I did a short research on this topic. I had made some notes at that time, now in 2014, things are evolved a lot.  Publishing my research on blog so that in curious tech historian can use it their studies.

Its quite a long data sheet so I would be publishing it in parts.

I set the agenda first, here is the basic questions of topics I had tried to discover
1) What is Push Notification?
2) How does it work?
3) How does it look like?
4) Does it supported by different major CellPhone OS providers like IPhone, Android, Nokia, Blackberry? Yes!
5) Any Thirdparty Push Service Providers? Yes
a) Urban Airship provides SDK which developer can use while creating their apps.
b) PyAPNS - daemon
c) Xtify
d) Appoxee
e) Pusher / spire.io/socket.io
f) PubNub [In-App, PNS doesnt work when app is closed]
g) App42( Shephertz)
6) Does they charge for Push Notification service? yes but minimal
7) What are use cases?
8) How can we use it?
9) What will be the business case?
10) Is it possible work out something which connects with other solutions?
11) Whats in Market
12) Will SMS gets obsolete, because of Push Notifications on Mobile?

 In following blogs, I will be publishing answers to above questions.

Wednesday, June 25, 2014

Entrepreneurship - Game of Chess or Chase!

This is piece of imaginative writing drawing comparisons with real experiences. Yes, its abt entrepreneurship and specifically for first timer from first time drawing comparisons from characters of game of chess.

Before I start here is some improvization in the context!
How many roles a entrepreneur must play,
Before you call him an entrepreneur,
The answer my friend is blowing in the wind,
The answer is blowing in the wind!
                               - Bob Dylan - Verse extended in context of entrepreneurship

Here is the original & famous song :


Let the game of chess and chase begin. 
 
1) Pawn 
You are star, you are a leader, you have to fight and win battles yourself. You have shown the courage to start on your own but still you are lame pawn. Do you have enemy? No you particularly in your own world, toying with your own ideas, only person can kill you or your venture is you yourself, it might be out of boredom or you do suicidal steps.

2) Group of Pawns


You bring along other pawns after you are able to survive 1st step and successfully bring along other pawns. Do you have enemy? Still no, you practice with your teammates and may have some opponent pawn for a small practice fights. There is high risk that you and your team can self destroy with petty fights or differences.
 
3) You be a knight 

You emerge as a leader of small group of pawns. Now there may be other threats might be lurking where you may get stumped due to financial management getting new pieces in your army. Your aim is to move ahead to get other sub pieces like rook, knight and move ahead to role of king/queen or bishop.


4) You be a king or queen or  Bishop 


Nnow you are in top leadership. You can go for kill using your special skills. Or get killed in goose chase of hockey stick graph. :) Lot to write here but will write in my spare time.



5) Go Buddha! Detach!
 

Come out of execution, let experts take the ship ahead, you be a helper and beneficiary. 

You be a chess player and all the pawns are under your mercy. #investor or #board. But thing is that you cant go to step 5 directly without doing aboves 4 steps, in real life.


Story can be improvized or may have some gaps, but its first cut. I will keep it updated.

Friday, April 25, 2014

This is not 1984 and ...

This is not 1984 and You are not Steve jobs running apple. and specially for indian entrepreneurs, You are not in silicon valley.

Understood, now go back and work through your vision and execute your ideas.

 Have a look at this video. 
Update: Old video was wrong one!




Mr. Legendary definitely had  his own karizma.


Saturday, April 19, 2014

Entrepreneurs - Spot Your Customers!

Source: Yavvy.com

This is for entrepreuners burning their midnight oils to run their companies in B2B segments. This piece of knowledge is not an enlightenment for many of you. May be Validation point as this comes from practice, this is what I observed during our startup journey since last 4 years.

From experience at Screen-Magic for 6 years building product & customer base from scratch, I  got some wisdom, would like to share so writing this blog. When anyone starts with some kind of product, you dont have budgets & skills to market it. This happens mostly for entrepreneurs.

Here are 3 types of category I can classify, various customers :

Early Adopters - They will find you
      They are high class ideators, master implementers and always willing to try new things to improve their own life. If you create simple but value products, these guys will find you and use your products. They are also advance users of google of knowing tricks of discovering hidden treasures. They will give you some money as well. You should listen to them to get valuable ideas.

Implementers - They will approach you with Reference      They may not ideate themselves but they are highly aggressive implementors. They will keep searching for greenshoots. They will get references and find you. Implement it successfully and will write reviews for you.


Money Burners (earners for you) - You hunt them and Sell services in polished and higher price     These people have been given larger budgets and assigned with huge targets. They run out of ideas, if you have nice website with business oriented content with ROI. These people would love you and would pay your higher cost to achieve success with little efforts. They believe in using products, rather than building it themselves.

All the best for building successful enterprise.




Thursday, April 10, 2014

HeartBleed - How to Fix & Test on Ubuntu

Img Source: WikiPedia


Suddenly There was an havoc on tech networks, created by HeartBleed bug. 

As it was related to omnipresent and widely believed to most secure OpenSSL, Everyone on internet is trying to gain traction by writing about it. But very few are writing about how to detect, fix and test. 

I got few articles from certain Q&A sites, just thought of putting them all together in easy way.


How to Detect for your ubuntu server :

   Which Ubuntu Servers : 
    
   Dont Know Version? Here is the command :
    $lsb_release -a
  
   Security issue affects these releases of Ubuntu and its derivatives:
      Ubuntu 13.10
      Ubuntu 12.10
      Ubuntu 12.04 LTS



   From Your own machine:
    1) Login to your server 

       $openssl version -a
        if version is 1.0.1 (till f), your openssl is vulnerable.

    From outside
     1) Visit Fillippo.io 
         


     2) from command prompt : 
          $openssl s_client -connect example.com:443 -tlsextdebug 2>&1| grep 'server extension "heartbeat" (id=15)' || echo safe


How to Fix for your ubuntu server :

      The problem can be corrected by updating your system to the following package version: 
       Ubuntu 13.10:
libssl1.0.0 1.0.1e-3ubuntu1.2
       Ubuntu 12.10:
libssl1.0.0 1.0.1c-3ubuntu2.7
       Ubuntu 12.04 LTS:
libssl1.0.0 1.0.1-4ubuntu5.12

Or  You can do following
$sudo apt-get update
$sudo apt-get install openssl libssl-dev
Find Which services to restart
sudo find /proc -maxdepth 2 -name maps -exec grep -HE '/libssl\.so.* \(deleted\)' {} \; | cut -d/ -f3 | sort -u | xargs --no-run-if-empty ps uwwp 
 

Restart services which are using OpenSSL like Apache, nginx.





How to Test for Success?

$dpkg -l | grep openssl
You should see, following, then you are ok
  openssl                            1.0.1-4ubuntu5.12                       Secure Socket Layer (SSL) binary  

or
 Visit Fillippo.io 
Hope it helps you to fix Heartbleed.