Twitter, may be not for advertising

Here’s a Tweet posted 2 days ago, and after 7 hours.


It had received 320 Retweets.   @bbcbreaking have 9.68 million followers. In theory, this Tweet would have been potentially viewable by them (at least half of them) as well as the additional shares from the ReTweets. So how many clicks has the story received 7 hours later? 10,000? 100,000?

No….,  “2,484”

And somehow shocking stats. Of course I was guessing not all your followers pay attention to your tweets, but the numbers are so much lower than one would expect.

Is digital advertising drowning or just Tweeter?





Literal values use in Eclipse


If you have experienced following comment in your code, I probably assume you are an Eclipse developer.

log.warn("Could not save file " ); //$NON-NLS-1$

Those comments silence a warning that Eclipse emits when it encounters string literals (and has been configured to complain).

The idea is that UI messages should not be embedded as string literals, but rather sourced from a resource file (so that they can be translated, proofed, etc). Consequently, Eclipse can be configured to detect string literals, so that you don’t accidentally have leave unexternalized UI strings in the code; however, there are strings which should not be externalized (such as regexps) and so, //$NON-NLS-1$ gives you a way to communicate that fact to the compiler.

Best practice to use literal values is using and files.


import org.eclipse.osgi.util.NLS;
public class Messages extends NLS { 
  static {
   NLS.initializeMessages("messages",Messages.class); //$NON-NLS-1$
  private Messages() {
  public static String MessageNeedToUse;

In file

MessageNeedToUse = Could not save file

Now you can use above literal with Messages class.






Would iPaaS replace ESB?

Web Services and Enterprise Service Bus

Since the beginning of this century ,web services became the popular glue for  integration between organization internal systems as well as external service providers.  Now web services became the primary methods of integrate an IT infrastructure. 

The enterprise service bus, known as the ESB, provided the ability to consolidate services through a centralized entity.Everything was connected directly to the enterprise service bus and the ESB routed data as necessary. While this provided increased flexibility and scalability, it also slowed down communication times and increased overhead.

Wonder what is the fastest ESB, check this out..

Integration-Platform-as-a-Service (iPaaS)

Integration-platform-as-a-service is the latest god in the systems integration evolution. It allows a organization to integrate their entire IT system through a service platform architecture. Rather than hosting integration platform in-house, iPaaS delegates all the complexity to a 3rd party vendor. Such architecture provides immediate access to the latest product features, decreases maintenance overhead and ensures extended resources availability. iPaaS is the natural extension of the popularity of SaaS deployment, allowing SaaS solutions to be integrated into a singular platform through a comprehensive and consolidated system.

 would it ?

These 2 concepts are different and serve a different purpose.
While you can integrate any back-office application with iPaas, you will face constraints and issues such as:
– how do i expose securely the legacy applications i want to integrate with?
– what would be the latency if many calls have to be done from the iPaas to the back-office (assuming the iPaas is used for Service Orchestration, or else it cannot be compared with an ESB)?

So, iPaas should be used for applications that require cloud-to-cloud integration, and very few back-office calls, while ESB is to be used for on-premise applications integration and service orchestration. Both products can be used in many projects where the ESB is used to expose fine-grained internal services that are then consumed by cloud applications through the iPaas.


Equinox love of Java ..

WSO2 Carbon Feature manager is powered by Equinox P2. Equinox is a very popular, widely used implementation of the OSGi framework.  The command line console of Equinox can be accessed by running with the “-console” option.
You can run the equinox jar file with the console enabled as follows.

java -jar org.eclipse.osgi_3.9.1.v20140110-1610.jar -console

Also you can access the OSGi console of your Eclipse installation. Go to the folder where Eclipse is installed and run the following command.

./eclipse -console

As usual, “help” command in the prompt will give a list of available commands and what they do. 

The most interesting commands for getting started are:

  • install <bundle URL> – Installs the bundle from the given URL
  • start <bundle # or bundle name> – Starts the bundle with the given numeric or symbolic id
  • stop <bundle # or bundle name> – Stops the bundle with the given numeric or symbolic id
  • ss – Reports a summary status of all installed bundles
  • diag <bundle # or bundle name> – Reports any resolution problems for the bundle with the given numeric or symbolic id

The Equinox OSGi implementation can be configured. One of the most common configuration scenarios is to have the framework automatically install and run a set of bundles when it is started. You can do this by editing ‘config.ini’ file.

If you have bundles A.jar and B.jar that you want to have installed and started when Equinox is run. As with other OSGi implementations, you can run the framework (with java -jar ) and install and start A and B using the console. This is a manual process but you need only do it the first time you run Equinox (OSGi frameworks remember the installed and started bundles from run to run). To do something completely automated, create a configuration that lists A and B as bundles to be installed and started. You can use some thing similer design as following structure.


Where config.ini is a Java properties file that contains the following line.

osgi.bundles=A.jar@start, B.jar@start

When Equinox is started using the command line above, A and B are installed and started.

Also the CommandProvider interface provided by Equinox enables to extend the console by providing custom commands. We need to implement the CommandProvider interface. For each new command we add, we need to provide ‘public void’ methods which take in a CommandInterpreter object. Also the method names should start with an underscore and should be followed by the command name. The getHelp() method should return a string describing the commands we add, so that it can be displayed through the help command.