Facebook’s successful Mobile Strategy

Facebook’s Financial results published on Wednesday for the first three months of this year showed the company’s focus on mobile ads is paying off nicely, with overall revenue hitting $2.5 billion, up 72 per cent on the same period 12 months ago.

Profit for the quarter topped $642 million, up from $219 million a year earlier. Other promising data included a growing user base, now at 1.28 billion, marking an increase of 15 percent on last year’s figure. A whopping 802 million users currently log into their accounts on a daily basis, Facebook reported.

Breaking the numbers down, 59 percent of its $2.27 billion in ad revenue came via mobile ads, the company announced – a notable jump from last year’s 30 percent figure and a sure sign that its mobile strategy is heading in the right direction.

Mobile daily active users hit 609 million, marking a rise of 43 percent, while a 34 percent increase in mobile monthly active users took the count past the billion mark (1.01bn) for the first time in its 10-year history.

Mobile expansion
Facebook’s mobile expansion in the last quarter involved its acquisition in February of messaging app WhatsApp, as well as the launch of news reader app Paper in the same month. Two more of its mobile offerings, Instagram and Messenger, are also performing well, with data showing each now has a user base of around 200 million.

Just two years ago, when it was yet to run its first mobile ad, Facebook said in its pre-IPO S-1 filing it had serious concerns about its ability to make money via ads on smartphones and tablets.

“We may not be successful in our efforts to grow and further monetize the Facebook platform,” the social media company said in the filing, adding that it could face grave difficulties if it was unable to balance “its efforts to provide a compelling user experience with the decisions we make with respect to the frequency, prominence, and size of ads and other commercial content that we display.”

Going by today’s better-than-expected financial results, those fears were not only unfounded, but also way off the mark.


Ruby Server doesnt start

When server is started from IDE, it doesnt start and if it throws the following error,

Error:  /script/rails doesnt exists

Solution: Create a folder script in the application folder and then copy the rails file from <application folder>/bin/ to the newly created script folder and then try starting the server


Learn ROR: Installation of the Ruby Environment

Installing Ruby Interpreter:

  • Download Ruby Interpreter from here
  • Run the installer and respond to any prompts during installation.
  • When the installation is complete,you can test the Ruby Interpreter by going to Run->irb (Interactive Ruby).
  • Type the Command puts “Hi”
  • You will see the output


=> nil

  • Then type “quit” to quit the environment.


Installing Development Kit:

  • Download the development kit from here
  • Extract the downloaded file
  • Open Command prompt and go to the extracted directory.
  • Execute the following commands,

ruby dk.rb init

ruby dk.rb install


Installing Rails:

  • Go to Command Prompt by Run->cmd and they execute the command “gem install rails”
  • After Installing Rails, check whether java is installed on your computer. If not, install it by downloading the package from java.com


Checking the Installation:

  • Open command prompt.
  • Go to the directory where you installed ruby. Make a new directory.
  • Go to the newly created directory and create a rails project using the following commands,

rails new myapp

  • Now move to the myapp folder created in the directory.
  • Then start the rails server by executing

rails server

  • This will start the server and will show all the details about the process like pid, port no in which it is running etc.
  • Go to the web browser and open the url “localhost:<portno>”. Now you can see the starting page of your project. Here the port no will be shown in the cmd prompt when you start the server.


IDE : Aptana Studio 3(like eclipse)

Framework Error when customised Eclipse Starts

The Error will be like



!ENTRY system.bundle 4 0 2012-05-28 12:45:34.156
!MESSAGE FrameworkEvent.ERROR
org.osgi.framework.BundleException: Exception in org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start() of bundle system.bundle.
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:1010)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:966)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:549)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:484)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:275)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.launch(StartLevelManager.java:245)
at org.eclipse.osgi.framework.internal.core.SystemBundle.resume(SystemBundle.java:155)
at org.eclipse.osgi.framework.internal.core.Framework.launch(Framework.java:503)
at org.eclipse.osgi.framework.internal.core.OSGi.launch(OSGi.java:51)
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:289)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:173)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
Caused by: java.lang.IllegalStateException
at org.eclipse.osgi.internal.baseadaptor.BaseStorage.checkSystemState(BaseStorage.java:654)
at org.eclipse.osgi.internal.baseadaptor.BaseStorage.getStateManager(BaseStorage.java:634)
at org.eclipse.osgi.baseadaptor.BaseAdaptor.getPlatformAdmin(BaseAdaptor.java:385)
at org.eclipse.core.runtime.internal.adaptor.EclipseAdaptorHook.frameworkStart(EclipseAdaptorHook.java:80)
at org.eclipse.osgi.baseadaptor.BaseAdaptor.frameworkStart(BaseAdaptor.java:260)
at org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start(SystemBundleActivator.java:55)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:991)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:985)
… 18 more



To solve this problem,

  • Download the latest eclipse version
  • Extract your customized eclipse version.
  • Copy and replace the whole stuffs inside the extracted customized eclipse folder into the standard eclipse folder.
  • Now launch eclipse to enjoy your customized version and not the standard one.


In every dual-core phone, there’s a PC trying to get out

We’re still waiting for Ubuntu Mobile, Canonical’s mobile operating system, to finally make its official debut on a smartphone. Smartphone manufacturer Meizu has published a short demonstration video showing the OS in action on one of its phones. In it, we get a closer look at how the software will perform when used for everyday tasks, such as typing on the keyboard, switching apps, and navigating though the home screens.

To install the preview version on your phone or tablet, visit here

Heartbleed Bug

The Heartbleed Bug is a serious vulnerability in the popular OpenSSL cryptographic software library. This weakness allows stealing the information protected, under normal conditions, by the SSL/TLS encryption used to secure the Internet. SSL/TLS provides communication security and privacy over the Internet for applications such as web, email, instant messaging (IM) and some virtual private networks (VPNs).

The Heartbleed bug allows anyone on the Internet to read the memory of the systems protected by the vulnerable versions of the OpenSSL software. This compromises the secret keys used to identify the service providers and to encrypt the traffic, the names and passwords of the users and the actual content. This allows attackers to eavesdrop on communications, steal data directly from the services and users and to impersonate services and users.

The Heartbleed bug is sending shockwaves throughout the Internet right now, and potentially leaves unimaginable amounts of private data exposed to hackers who take advantage of the flaw in the OpenSSL encryption software used by some of the world’s most popular websites. Considering that the flaw can expose a range of sensitive data, including usernames, passwords, emails, instant messages, credit card numbers, and more, it’s imperative that you do what you can to minimize the damage.

Incompatible Namespace IDs in Namenode and Datanode

When the NameNode is formatted a namespace ID is generated, which essentially identifies that specific instance of the distributed filesystem. When DataNodes first connect to the NameNode they store that namespace ID along with the data blocks, because the blocks have to belong to a specific filesystem.

If a DataNode later connects to a NameNode, and the namespace ID which the NameNode declares does not match the namespace ID stored on the DataNode, it will refuse to operate with the “incompatible namespace ID” error. It means that the DataNode has connected to a different NameNode, and the blocks which it is storing don’t belong to that distributed filesystem.

This usually means that you’ve misplaced your NameNode metadata somehow. If you have multiple HDFS installations your DataNode may be connecting to the wrong NameNode. If you only have a single installation then your NameNode is either running with a different metadata directory, or you’ve somehow lost the metadata and started with a newly formatted filesystem (which should only happen by running hadoop namenode -format).



You must have set a property “hadoop.tmp.dir” in core-site.xml file in hadoop conf folder. Go to the directory pointed by the value of this property. There you can find two folders,

  • name
  • data

copy the namespace id in the name/dfs/current/VERSION file to the data/dfs/current/VERSION file. Similarly correct this on all datanode machines.

Note: If you cant find the above property then you must have set two different paths for these two with the properties “hadoop.name.dir” and “hadoop.data.dir”. Follow the same steps to correct the problem.