Thursday, February 28, 2013

Page View Count Track Record

Nothing motivates an amateur blogger as the page view count. It can be totally addictive.

Soooooo I'm setting my self a goal in page view counts :)
Target =  10,000 Page Views by 2014 Jan 1!!!

If I get in average 30 page views a day, I can easily exceed the target.

Raising the bar and revising the target :)

Avg page view count = 100

New Target =  35,000 Page Views by 2014 Jan 1!!!

I will be keeping track of the monthly page view count in this post.

2013, Feb 1          :     1500
2013, March 1     :     2336
2013, April 1        :     5000

And milestone record;

1500 : Jan 30,   2013
2000 : Feb 24,  2013 
2500 : Mar 3,   2013
3000 : Mar 6,   2013
3500 : Mar 13, 2013
4000 : Mar 22, 2013
4500 : Mar 26, 2013
5000 : Mar 30, 2013

March has been a wonderful month with page view count going to 5000 from 2500!

6000 : April 11, 2013

Time to experiment with adSense :)

ok it didnt work :( they rejected it  :\

7000 : May  5, 2013
8000 : May 29, 2013
9000 : June 21, 2013
10000: July 18, 2013 (Original target achieved, I guess I've raised the bar too high with the second target :( )

11000: August 22,2013

Wednesday, February 27, 2013

What most schools don't teach

We, working at Asian off-shoring companies, may not have fraction of a fraction of the perks silicon valley is offering. No free food, no cool offices, no free laundry....

Yet we have one thing in common.


As they say "these idiots pay me for doing what I'd do for free" :)

Love this video...

Tuesday, February 26, 2013

I'd like a little cloud please...

Cloud computing refers to an IT service model and platform that provides on-demand based IT services over the Internet.

It is composed of 5 essential characteristics, 4 deployment models and 3 service models.

Five essential characteristics
  • on-demand self-service
  • broad network access
  • resource pooling
  • rapid elasticity
  • measured Service
Four major deployment models
  • private cloud
  • public cloud
  • community cloud
  • hybrid cloud
Three service models
  • SasS (Software as a Service)
    • – Customer Relationship Management (CRM) service, Google Gmail
  • PaaS (Platform as a Service)
    • Google App Engine, Microsoft’s Azure
  • IaaS (Infrastructure as a Service)
    • Amazon Elastic Compute Cloud (EC2), VMware vCloud Datacenter

Sunday, February 24, 2013

Friday, February 22, 2013

What's in a Name?

It seems to be in the nature of programmers in general, and open source programmers in particular, to want to reinvent the wheel. So if you are looking to find a video conversion program on Sourceforge, you have 190 to choose from. This penchant among programmers is deep-rooted; the phrase "Yet Another" prefixed to a program's name long ago became a way of acknowledging that whatever you were doing, many others had already done it before. There's YABB, "Yet Another Bulletin Board," and YASSP, "Yet Another Solaris Security Package," and Yet Another Bittorrent Client, and on and on.

When two Stanford grad students started upa new venture in 1994, the name was a smart-alecky acronym for "Yet Another Hierarchical Officious Oracle". 


-  Excerpt from Dreaming in code : two dozen programmers, three years, 4,732 bugs, and one quest for transcendent software by
Scott Rosenberg

Tuesday, February 19, 2013

Perl Vs Python

Perl and Python are longtime rivals. They are both higher-level languages, usually used as "scripting languages" or "glue code" or "duct tape".

The difference?

Perl       : TMTOWTDI  = There's more than one way to do it.
Python  : TOOWTDI     = There's only one way to do it.


Software = Onion

Software is onionlike, a thing of layers, each built painstakingly and precariously on the previous one, each counting on the one below not to move or change too much.

Programmers call these accretions "layers of abstraction," because each time a new one is added, something complex and specific is being translated into something simpler and more general. 

At the very bottom of the pile, sitting right on top of the core memory, is assembly language, invented half a century ago to make it easier for programmers to manipulate the core's zeros and ones by hand. Instead of simply writing lots of binary code, like 10110000 01100001, they could write the equivalent assembly language instruction, which uses commands with names like "mov" and gives variables easier-to-remember labels. You're still pushing bits around by hand, but you have some easier handles to grab. 

For most human beings assembly language is difficult to learn and arduous to write. It's also not very adaptable; there's a different assembly language for each type of CPU, requiring you to rewrite your code each time you want to run it on a different make of computer.

So the programmers of yore started adding more layers of abstraction, with each layer moving a little further away from the machine and closer to the human being.  The decade from the mid1950s to the mid1960s saw a sort of Cambrian explosion of new programming languages, including many that are still in use or that became the ancestors of Lisp, Cobol, Algol, Basic. The very first to achieve wide use was Fortran—short for "FORmula TRANslating system." In Fortran, laborious sequences of assembly language procedures were summarized in brief commands. The human programmer would write a sequence of these commands—source code; then a kind of uberprogram running on the computer called a compiler would translate those commands into object code in the machine's own language. 

It was as if people who had communicated by spelling out every word to one another, letter by letter, suddenly figured out how to talk in syllables.

The leap was vast—so vast that at first Fortran's promoters believed they had not so much advanced computer programming as entirely tran scended it. Their invention, they wrote, would "virtually eliminate coding and debugging." :) They touted Fortran as an "automatic coding system," since it replaced the opaque binary code of machine language or the only slightly more accessible assembly language with a relatively more readable sequence of commands like READ, ASSIGN, GOTO, and STOP.

But like so many innovations in programming over the following decades, it could not deliver on its dream. Ultimately, Fortran, for all its originality and utility, solved one set of problems only to introduce others. Within a decade of its introduction, the entire field of programming was the victim of its own success, and experts gathered in international conclaves to ponder a way out of "the Software Crisis." 

-  Excerpt from Dreaming in code : two dozen programmers, three years, 4,732 bugs, and one quest for transcendent software by
Scott Rosenberg

Wednesday, February 13, 2013

BPEL for dummies

In no time there will be a book in this title. Since it's not there yet, I thought may be I should write a blog post.

Folks at our office were discussing about how wonderful it'd be to have faster merchant provisioning. The most irritating thing about the vendors who have products and services to sell via other on-line traders is they have varying needs with regard to the information they need once a sale is done. One might want to know customer's name. Address and product he bought and another might want to know customer's wedding anniversary date since they like to send a card! Well, things are not that extreme, but you get the point. In other words, vendors have different APIs and we have to feed the information accordingly. When a vendor comes to us with his loads of goods and his API, we need to first wire our system with his API so that we can start selling his goods. The little problem here is it takes more time than we like to do the wiring. Can we do it in a faster way?

Using a ESB can be the solution of having to deal with different technologies.

Enterprise Service Bus (ESB)

ESB makes it possible to connect services implemented in different technologies (such as EJBs, messaging systems, CORBA components, and legacy applications) in an easy way. An ESB can act as a mediator between different, often incompatible protocols and middleware products.

But still, how can we speed up the process of giving the vendors what they want?

A little reading on the subject had me thinking BPEL. Can it solve our problem?

What is BPEL?

As per Wikipedia, Business Process Execution Language (BPEL), short for Web Services Business Process Execution Language (WS-BPEL) is an OASIS standard executable language for specifying actions within business processes with web services.

In other words as “Business Process Execution Language for Web Services” put it, BPEL (Business Process Execution Language for Web Services, also WS-BPEL, BPEL4WS) is a language used for composition, orchestration, and coordination of web services. It provides a rich vocabulary for expressing the behavior of business processes.

The main goal of BPEL is to standardize the process of automation between web services.

Say company A purchasing something from company B. BPEL allows this interaction to be described easily such that company B can provide a Web Service and company A can use it with a minimum of compatibility issues.

Within enterprises, BPEL is used to standardize enterprise application integration and extend the integration to previously isolated systems. Between enterprises, BPEL enables easier and more effective integration with business partners. BPEL stimulates enterprises to further define their
business processes, which in turn leads to business process optimization, reengineering, and the selection of the most appropriate processes, thus further optimizing the organization. Definitions of business processes described in BPEL do not influence existing systems. BPEL is the key technology in environments where functionalities already are or will be exposed via web services.
With increases in the use of web service technology, the importance of BPEL will rise further.

“BPEL Cookbook” has this to say about BPEL.
BPEL was created to address the requirements of composition of web services in a service-oriented environment. It is one of the key standards accelerating the adoption of SOA.
BPEL is not only commoditizing the integration market, but it is also offering organizations a whole new level of agility—the ability to rapidly change applications as per changing business landscape. BPEL enables organizations to automate their business processes by orchestrating services within and
across the firewall. It forces organizations to think in terms of services. Existing functionality is exposed as services. New applications are composed using services. Communication with external vendors and partners is done through services. Services are reused across different applications.

With BPEL we can define simple and complex business processes. To a certain extent, BPEL is similar to traditional programming languages. It offers constructs, such as loops, branches, variables, assignments, etc. that allow us to define business processes in an algorithmic way.
BPEL is a specialized language focused on the definition of business processes. Therefore, on one hand it offers constructs, which make the definition of processes relatively simple. On the other hand, it is less complex than traditional programming languages, which simplifies learning.

To see how the code actually looks like visit the specification of the standard at


BPEL4WS was first conceived in 2002 with the release of the BPEL4WS 1.0 specification, a joint effort by IBM, Microsoft, and BEA. This document proposed an orchestration language inspired by previous variations, such as IBM’s Web Services Flow Language (WSFL) and Microsoft’s XLANG specification.
Joined by other contributors from SAP and Siebel Systems, version 1.1 was released less than a year later, in 2003. WS-BPEL 2.0 was released in 2007 as an OASIS standard.

BPEL Servers

BPEL servers provide a run-time environment for executing BPEL business processes. Some of the known names are,
  • Oracle BPEL Process Manager
  • Microsoft BizTalk
  • Cape Clear Orchestration Studio
  • Apache ODE
  • Open ESB

Apache ODE
Apache ODE (Orchestration Director Engine) executes business processes written following the WS-BPEL. It talks to web services, sending and receiving messages, handling data manipulation and error recovery as described by the process definition.

Open ESB
Project Open ESB implements an Enterprise Service Bus (ESB) runtime using Java Business Integration (JBI) as the foundation. This allows easy integration of web services to create loosely coupled enterprise class composite applications.

After Oracle and Sun Microsystems merging, OpenESB Community has been created to maintain, improve, promote and support OpenESB.

BPEL design and development tools

These tools enable graphical development of BPEL processes. Some tools come bundled with the BPEL servers.
I find these tools to be the best part. They provide a nice canvas for us to draw our process on without messing around with boring XMLs.
Eg: Eclipse Plugin :BPEL Designer

For some not-for-dummies details visit “BPEL or ESB: Which should you use?”

  • BPEL Cookbook: Best Practices for SOA-based integration and composite applications development , 2006, Packt Publishing
  • Business Process Execution Language for Web Services, Second Edition , 2006, Packt Publishing , Matjaz B. Juric
  • Web Services Business Process Execution Language Version 2.0 , OASIS Standard , 2007

Sunday, February 10, 2013

LinkedIn for Software Developers

Few days back I received a mail from LinkedIn announcing,

I recently added my 500th contact in the site.

I've found that LinkedIn to be a great tool. It's "The" way to make sure the head hunters find their way to you.
And also it's a great way to showcase a hard earned reputation through recommendations. By adding your LinkedIn profile link in your CV you can start with a positive impression in your interviews.
In addition it's great for networking. You can easily find your target audience for a research project. If you're interested in a job in a particular company, it's great to find a few people who are working there.

Tuesday, February 5, 2013

Eclipse getting stuck at start up

Found this tip from web. Eclipse got stuck at the end of the start up process several times, and deleting the following file fixed the issue.

In Eclipse workspace


Worked like a charm!

apt-get update failure

If running
sudo apt-get updategives following error it's because it's unable to resolve the IP.

Err oneiric Release.gpg
  Unable to connect to [IP: 80]

W: Failed to fetch  Unable to connect to [IP: 80]

In /etc/resolv.conf remove the existing name servers and add as the primary DNS. This is one of the two DNS servers Google is offering for public use (other



Ubuntu uses apt (Advanced Packaging Tool) for package management.

The apt-get command is used to work with apt. It is a simple command line interface for downloading and installing packages.

Install a Package    sudo apt-get install softwarePackage
Remove a Package    sudo apt-get remove softwarePackage
Remove a Package + configuration files sudo apt-get --purge remove softwarePackage
Update the Package Index sudo apt-get update
Upgrade Packages    sudo apt-get upgrade

When we try to install a package and it fails giving missing dependencies as reason, it asks to run the following.
sudo apt-get -f install
Here -f, --fix-broken means,
Fix; attempt to correct a system with broken dependencies in place. This option, when used with install/remove, can omit any packages to permit APT to deduce a likely solution. If packages are specified, these have to completely correct the problem. The option is sometimes necessary when running APT for the first time; APT itself does not allow broken package dependencies to exist on a system.

Apt stores a list of repositories or software channels in the file

APT package index is essentially a database of available packages from the repositories defined in the above file.

Actions of the apt-get command are logged in the /var/log/dpkg.log log file.

Monday, February 4, 2013

Creating a desktop shortcut in Ubuntu

1. Create a file on desktop named A.desktop

2. Open it with a text editor and copy the following,

[Desktop Entry]

3. Change the name, Exec and Icon

BPO/IT industry in Sri Lanka

It's important to have a good understanding about the industry one is in; specially when the industry is highly dynamic. It helps to plan your next career move and also helps you to prevent being at loss of words when engaged in a conversation with an industry pundit :)

IT industry in a developing Asian country like Sri Lanka thrives mainly due to outsourcing.
Outsourcing is the delegation of work from an organization/company to a service provider company, where the service provider company typically carries out the same work cheaper and more effectively than the company which is outsourcing. Companies outsource work primarily to gain cost advantages, efficiencies and expertise.
  • BPO : Business Process Outsourcing
  • KPO : Knowledge Process Outsourcing
  • FAO : Financial and Accounting Outsourcing
  • ITO : Information Technology Outsourcing
  • HRO : Human Resources Outsourcing
  • LPO : Legal process outsourcing
  • DPO : Document Process Outsourcing
  • ESO : Educational Services Outsourcing
Business Process Outsourcing (BPO) is the act of transferring some of an organization's repeated business processes to an outside service provider to achieve cost reductions while improving service quality. The Higher end BPOs, also called KPOs (Knowledge Process Outsourcing) generally requires a specialized skills. For example, accounting and finance, investment research and engineering. 

With a population of only 20 million, Sri Lanka does not offer the size advantages of countries such as China, India, and the Philippines. However, recognizing its small scale, Sri Lanka has tended to focus on higher-value niche products across industries
BPO is a fast growing vibrant sector of employment in Sri Lanka. Many global and local BPO companies have operations in Sri Lanka. WNS, TimeX BPO, Office Tiger, HSBC Data Processing Limited, Amba Research, Aviva are few of the leading companies. The first IT and BPO companies established operations in Sri Lanka as far back as the 1980s. Today, more than 300 IT and BPO companies have operations in Sri Lanka, more than 60,000 people hold IT or BPO jobs, and the sector generates more than $400 million in exports. Several well-known international firms such as HSBC, IFS, Motorola, HP subsidiary MphasiS, RR Donnelley, and WNS have established R&D, IT, and BPO centers in Sri Lanka. Meanwhile, Sri Lanka-based firms provide advanced services to blue-chip global clients, including Google, Lenovo, Microsoft, Nokia, JPMorgan, the London Stock Exchange, Santander Bank, and Emirates Airlines.

In the Sri Lankan economy IT-BPO export earnings have shown a stable upward trend during the past few years and it has reached an estimated IT-BPO export revenue of $ 275 million in year 2009.

A recent World Bank study revealed that the country’s labor costs ranked the lowest, in comparison to many other outsourcing destinations.

According to the latest National ICT Workforce Survey, the number of Sri Lankans holding IT or BPO jobs has almost doubled from 34,000 in 2006 to 63,000 in 2011. The national goal is to increase direct employment in the sector to 100,000 in the next five years. 
More than 5,500 graduates with IT-related degrees and post-graduate degrees are now joining the workforce each year. In addition, more than 25 private educational institutes offer diplomas in IT, and tertiary and vocational education institutes around the country offer preliminary IT training courses. 
55% of the IT professionals have more than 3 years experience and the balance 45% are with less than 3 years experience. The overall attrition rate is about 7% and the brain drain is about 4% among the IT Workforce in 2009. The attrition rate of IT Workforce in the IT Sector is relatively high with 11%. 

-“National ICT Workforce Survey“, 2010, Survey conducted on behalf of the ICT Agency of Sri Lanka and implemented by MG Consultants (Pvt) Ltd

-“Competitive Benchmarking: Sri Lanka Knowledge Services” , 2012, A.T. Kearney