WSO2 Venus

Prabath SiriwardenaWSO2 SOA Summer School - SOA Governance by Asanka

Deepal JayasingheWho is master in Math and why?

One of my colleague explained me a very nice story he learned by reading the book called “Outliers”. According that book, it says Asian are some what smarter when it come to mathematics. And there is a nice story behind that too, that is the number system they used. For example in English we start with, one, two three.... , ten, eleven, twelve, thirteen, fourteen and etc... , if you think carefully. In English language though you pronounce as thirteen fourteen you write them differently. As en example when we call thirteen, it gave impression that the number is going to start with three, in fact it does not.

So, according the book this complexity make some issues in the childhood.

After listening to my friend I thought though this, then I found even in my own language (Sinhalese) we have some confusion. For example in Sinhalese when it come to 15 we pronounce is differently than other numbers, simply we break the sequence. From eleven to twenty we have a right sequence, the way we write and read is same except number 15.

Paul FremantleThe Hampton Hornpipe

Prabath SiriwardenaSecurity in SOA


Paul FremantleSea Grass near Shelter Island

Yumani RanaweeraCreating a JDBC External User Store using WSO2 User Management component

The WSO2 User Manager is a library that lets developers handle user authentication and authorization in applications. It authenticates users from different types of user stores and currently has the capability to easily plug-in to JDBC, LDAP and AD.

Given below are the steps to tryout JDBC user store. I'll be using a MySql database for this.

1. Create a MySQL database

  • In my database I have following structure;

To create this easily rather than entering MySql statements interactively we can put the SQL statements in a file and then tell mysql to run it in batch mode. Simply copy and paste the SQL statements below in a note pad and save it with .txt extension.


-------------------------------------------------------------------------------------------------------------------

/*Create a new usermgmt database */
create database usermgmt;


/*Create the users table */
create table usermgmt.users (username varchar(10) primary key,password varchar(10)) engine=innodb;


/*Create the roles table */
create table usermgmt.roles (rolename varchar(10) primary key,description varchar(15)) engine=innodb;


/*Create the userroles table */
create table usermgmt.userroles (
username varchar(10),
rolename varchar(10),
constraint un foreign key (username) references usermgmt.users(username),
constraint rn foreign key (rolename) references usermgmt.roles(rolename)
) engine=innodb;


/* Create the userprofiles table*/
create table usermgmt.userprofiles (
username varchar(10),
profilename varchar(10),
email varchar(25),
postalCode varchar(5),
country varchar(10),
firstname varchar(10),
lastname varchar(10),
homephone varchar(10),
constraint un1 foreign key (username) references usermgmt.users(username)
) engine=innodb;


/*Describe the tables that were created above */
describe usermgmt.users;
describe usermgmt.roles;
describe usermgmt.userroles;


/*Insert data into the users table */
insert into usermgmt.users (username, password) values ("tamara", "tamara");
insert into usermgmt.users (username, password) values ("saman", "saman");
insert into usermgmt.users (username, password) values ("yumani", "yumani");


/*Insert data into the roles table */
insert into usermgmt.roles (rolename, description) values ("admin", "Administrator");
insert into usermgmt.roles (rolename, description) values ("guest", "Guest User");
insert into usermgmt.roles (rolename, description) values ("tester", "Tester");


/* Insert data into the userroles table */
insert into usermgmt.userroles (username, rolename) values ("tamara", "admin");
insert into usermgmt.userroles (username, rolename) values ("saman", "guest");
insert into usermgmt.userroles (username, rolename) values ("yumani", "tester");


/*Insert data into the userprofile table */
insert into usermgmt.userprofiles (username, profilename, email, postalCode, country, firstname, lastname, homephone) values ("tamara", "default", "tamara@yahoo.com", "123", "Sri Lanka", "Tamara", "Cuttilan", "1111111111");
insert into usermgmt.userprofiles (username, profilename, email, postalCode, country, firstname, lastname, homephone) values ("saman", "home", "saman@yahoo.com", "234", "SriLanka", "Saman", "Peries", "2222222222");
insert into usermgmt.userprofiles (username, profilename, email, postalCode, country, firstname, lastname, homephone) values ("yumani", "default", "yumani@yahoo.com", "345", "USA", "Yumani", "Ranaweera", "3333333333");
insert into usermgmt.userprofiles (username, profilename, email, postalCode, country, firstname, lastname, homephone) values ("yumani", "home", "yumani@gmail.com", "333", "USA", "Yumani", "Ranaweera", "4444444444");
insert into usermgmt.userprofiles (username, profilename, email, postalCode, country, firstname, lastname, homephone) values ("tamara", "home", "tamara@gmail.com", "444", "Sri Lanka", "Tamara", "Cuttilan","5555555555");


/*Retrieve table data */
select * from usermgmt.users;
select * from usermgmt.roles;
select * from usermgmt.userroles;
select * from usermgmt.userprofiles;

-------------------------------------------------------------------------------------------------------------------
  • Next, open a command prompt, navigate to the location where you saved the above file.

  • Type at the prompt;

    mysql -h localhost -u root -p -t -vv< {filename}.txt

(e.g. mysql -h localhost -u root -p -t -vv

NOTE: -vv was put to echo the commands to the output. You can remove that if its not required.

2. Install WSO2 ESB\WSAS\IS which has User Manager component in them

  • Download a binary distribution and unzip it to your local file system.

  • I will demonstrate with WSO2 Identity Server (IS).

3. Copy the Connector/J JDBC Driver

  • This is to be able to connect to MySQL from our application.

  • Download the MySQL JDBC Driver

  • Copy and paste it to WSO2_IS_HOME\repository\components\extensions folder.

4. Start the server

  • Go to WSO2_IS_HOME\bin and execute wso2server.bat file.

    Now that we have the prerequisite ready, let's setup the external user store and tryit out.

5. Setup the external user store from WSO2 Identity Server

  • Once the server is started open a browser and access, https://localhost:9443/carbon/. You get WSO2 IS admin console.

  • Sign-in using the default admin username\password (admin\admin).

  • In the console click on 'User Management' menu option and in 'User Management' page click on 'Add External User Store' link.
  • In the 'Add External User Store' page, select to create a 'JDBC' type external user store.

  • Use following information for the rest of the fields.

(Note: Replace database name, user name, password with you information).

  • Now we are done with creating the external user store. The user store connections can be validated via 'Test connection' option in the External user store menu as shown below.



Let's tryout the User Management functionality in another blog post....!

Tyrell PereraUS CIO Vivek Kundra on the new federal IT Dashboard

A 30 minute Q&A session covering dashboards, mashups, sharing & building a community as well as auditing what's reported on these dashboards and mashable data feeds. This session pretty much covers what any end user or a CIO would expect from a Dashboard and the best part is? it's a real world example happening right now.


Isuru SuriarachchiConvocation and My Gold Medal


The general convocation of University of Moratuwa for 2009 was held on 25th of June. It was a great day in my life due to many reasons. Obviously the day of graduation is a special day for any graduand. But it was bit more special for me as I had a piece of gold :) .

I was awarded the gold medal which is for the best performance (highest GPA) in the department of computer science and engineering department. It is one of the greatest achievements in my life and I’m really proud to bear it :) ..

My Gold Medal I can remember two similar days in my school time at Richmond College. First one is the day I was awarded the Principal’s Medal for the best performance in G.C.E O/L examination (I was ranked 9th of the island). Second is the day I was awarded the Weerasinghe Medal for the best result in physical science in G.C.E A/L examination (I was ranked 5th in the district).

There are many people who helped me in my academic career which has become a great success. First of all I’m grateful to my parents who were behind me in every single day in my life. And also my two brothers who showed me the way right through. I always believe that the factor that they were extremely successful in their academic careers was a great catalyst for my career. Then I have to thank all my teachers from nursery to primary school (Christ Church boys’ college, Baddegama) to Richmond College to UOM. And also there have been lots of friends right from my child hood to my working place, who have helped and encouraged me immensely.

So at the end of the day, I have to say that I’m extremely happy about my academic career and proud to bear the gold medal. But I always believed and believe that there are at least few of my friends at CSE who deserve the award for “Best Performance” more than my self :) . Unfortunately, the “Best Performance” was measured through the GPA. It’s true that there is no other way to measure. But I always feel like it doesn’t find the “Best Performer”. Sometimes you may feel that I’m stupid.. May be I am :D ..

Finally I have to say that I’m really happy about what I’ve achieved and will try to serve my country in the best way I can in the future..

Tyrell Perera#OSCON 2009 is "Open for Business" and WSO2 will see you there

Look for us and find out what we've been up to ...



OSCON 2009 - O'Reilly Conferences, July 20 - 24, 2009, San Jose, CA
Now more than ever, open source technology is the smart choice for navigating uncertain economic waters. In a competitive business environment, open source gives you the means to drive down costs while increasing system and staff efficiencies. OSCON 2009 is where you'll find the latest information and new ways to connect with the growing community that is open source.


Saminda AbeyruwanBing.com search engine from $

Check out this new search engine bing.com from Microsoft. I am quite impressed with the map section.

Nanadana MihindukulasooriyaWSO2 SOA Summer School - Security in SOA : The brain friendly edition of complex security specs

If you are not registered already, you can register now. Like all SOA summer school classes, this course is FREE.

Topics covered :
"Security in SOA" webinar will focus on key security standards and identity management for SOA with regards to two emerging user centric identities, OpenID & Information Cards, and also XACML for fine-grained authorization. In contrast to traditional security webinar, this will be conducted in a brain friendly manner without making you getting lost in the SOA acronym cloud.

Presenter : Prabath Siriwardena, Technical Lead and Security Team Manager, WSO2 Inc.
Prabath is the security guru in WSO2 and he is famous for explaining complex things in a very simple manner. Want to see a proof of above statement ? “Understanding OpenID“ and “Identity as a Service“ webinars shows how capable he is explaining security stuff in a simple manner.

WSO2 SOA Summer School :WSO2 SOA Summer School program is to help the many IT professionals worldwide whose careers are being impacted by the global recession. These free classes will enable enterprise IT architects and developers to become more familiar with SOA concepts, technologies, and best practices—expanding the expertise they bring to either current or prospective employers. WSO2 has developed a wealth of knowledge on SOA best practices through the professional consulting, design and training it provides customers. The same senior technical experts delivering WSO2’s onsite and online training are leveraging their SOA implementation expertise to create and teach eight customized courses for the SOA Summer School. With this program. WSO2 is opening its doors to all individuals who want to boost their SOA knowledge directly from some of the industry’s leading experts—thousands of dollars worth of professional training at zero cost. “.

Samisa AbeysingheSecurity in SOA : Training

The next training in WSO2 SOA summer school is Security in SOA.

Become a SOA expert in this summer. It is all FREE from WSO2.

Samisa AbeysingheCarbon 2.0 is around the coner

It is almost here. The 2.0 version of Carbon SOA Platform.

We are about to do the 5th release candidate. Yes that is a lot of RCs (release candicdates) but at the same time, that means better quality.

We did the 1.5 release in February, and since then, there has been a great deal of improvements and fixes gone into the Carbon core.

The Registry core was re-designed, to enhance the structure. P2 was integrated to Carbon core to enhance component management. And there are much more...

Supun KamburugamuvaWSO2 Carbon

A Component based platform for SOA based on Apache Axis2

Do you believe in software componentization? For the last few decades there were many attempts by different organizations to build component based software systems. They achieved some successes. These attempts lead us to think weather true componentization is a reality? Here is a brief definition of a component.

Component

Clemens Szyperski and David Messerschmitt give the following five criteria for what a software component shall be to fulfill the definition:

  • Multiple-use
  • Non-context-specific
  • Compassable with other components
  • Encapsulated i.e., non-investigable through its interfaces
  • A unit of independent deployment and versioning

Now lets look at what is Carbon keeping in mind about components.

WSO2 Carbon

WSO2 Carbon is a SOA platform. Gradually it is evolving by addressing all the parts of a complete SOA platform. This platform is built around the popular web services engine Apache Axis2. Carbon offers a SOA runtime along with a rich set of configuration options. Carbon has a built in Registry which can be used by components running on top of Carbon. Registry acts as a configuration store. Apart from configuration Carbon supports monitoring as well.

At the runtime, when a request is given to a carbon based product (WSAS, ESB, BPS), the system virtually becomes an Axis2 runtime.

Axis2 Component architecture

Axis2 is a web services engine. Axis2 is developed to publish and consume web services. Axis2 can be extended to do various things using its modular architecture. For example in Synapse Axis2 is used as the core of an ESB. In Apache ODE, Axis2 is used for a BPL engine. In WSAS, Axis2 is used in it’s true nature i.e. deploying web services. So Axis2 has become a platform for various aspects of SOA. Users can write various components to extend Axis2 i.e. modules, transports, services. So Axis2 component architecture is very rich.

But can we use pure Axis2 as a platform for various aspects that I have mentioned in a unified manner? Answer is NO!. The drawback lies with the Java modularization and versioning. Lets say, Synapse depends on the external jar X with 1.1 version. ODE is also using this X jar but it depends on the version 1.2. Now we want to build a platform. The moment you put both these jars in to the class path, it is up to the Java virtual machine to pick one of the jar files. This is why pure Axis2 will fail as a platform.

Why OSGI

The solution is to use OSGi. Carbon uses OSGI to solve this problem of versioning.

But when you go the OSGi way, everything has to be an OSGi bundle. This is possible within WSO2 products. But for external jar file which doesn’t have an OSGI version, it is bit problematic. The solution is to take these external jars and wrap them in OSGi bundles. This is exactly what has being done in the Carbon Orbit.  

Platform

Carbon offers a platform for addressing various aspects of SOA. Carbon platform can be considered as two major parts.

1. Runtime Platform

2. Configuration and Monitoring Platform

Carbon runtime platform is an Axis2 instance wrapped in OSGi. Carbon has a web UI framework based on Apache tiles. This UI framework is the front end of the configuration framework. Backend of the configuration is coupled with the Axis2 runtime or Runtime platform.

At the highest level components to runtime platform are components to Axis2. For example Synapse is a runtime component. In order to configure the Synapse runtime component, there are several UI components written on top of the UI platform. All these components are OSGi bundles. Carbon is designed to work in a console and back end mode. Communication between front end configuration framework and backend configuration framework happens using standard web services calls.  

Carbon Component

As I’ve said earlier there are two types of Components. Runtime Components and Configuration Components are these two types. For all the Configuration components there is a runtime component associated with it. From these two, most important part is the Runtime Components. There is no point in having a configuration or monitoring component without anything to configure or monitor.

As I’ve said earlier runtime components are components to Axis2. These runtime components may have different other components. But these components are specific to those parent big components and without the parent component they don’t have an existence. Best example is Synapse Mediators. A mediator is a component of Synapse and Synapse may have lots of them. But Synapse is a component of Axis2.

The componentization offered by Carbon only extend to the componentization provided by Axis2. For example Rampart is the base of security for Carbon. Rampart is designed in a way that it will work with most of the other components of Axis2. This allows a product running in Carbon to easily use Security features provided by Rampart. For example WSAS and ESB both uses this component. WSAS uses security to secure it deployed services. ESB uses the carbon security features directly to secure it’s various components like proxy services. The nice thing about this is ESB and WSAS can use the Configuration UI written for Rampart.

This is same for Reliable Messaging and various transports as well. ESB and WSAS can share both reliable messaging and transport components.

Here is a case where this nice componentization doesn’t work due to the negligence of components developed for Axis2. Axis2 has a clustering implementation which is a component to it. But ODE is not written to use this API. But Synapse is written to use this API. So Carbon can provide clustering to ESB which is based on Synapse but it cannot provide clustering for BPS which is based on ODE.

Project Structure of Carbon

Carbon has three logical projects.

Carbon-Orbit

This project wraps non OSGI external jars in to OSGI aware jars.

Carbon

This provides the Runtime and Configuration platforms.

Carbon Components

Various Runtime and Configuration components.

A Product

A product is a Carbon + Sub set of Carbon Components.

For Example this is how ESB product is built.

ESB uses Axis2 as it’s runtime engine. Axis2 instance that is used in ESB comes from Carbon platform. Synapse is a component to Axis2. There are various carbon components written to configure synapse. ESB uses various other carbon components like security, reliable messaging etc. Sum of all these things gives the product called ESB.

WSO2 G-Reg

If we take WSO2 Carbon as the platform WSO2 Governance Registry is the metadata repository for Carbon. Registry core is built in to the Carbon itself. G-Reg can function as a separate product as well. G-Reg is different from other carbon products because it doesn't offer a runtime as in other products. From the start up of G-Reg to shutdown of G-Reg it is only configuration.

WSAS

WSAS provides the functionality host services, secure them apply reliable messaging etc. Clients can talk to these services.

ESB

ESB configuration is basically configuring a Synapse instance. It also uses feature like reliable messaging, security etc.

IS

Identity solution

BPS

Business process server, implementing BPEL.

Conclusion

Although componentization is a pretty hard job by nature, WSO2 carbon addresses most of the features of a componentized platform in the context of SOA. Still we have a long way to go. But we are getting there.

This is my personal view of Carbon as a platform. You may have different views. You are welcome to share those ideas..

Yumani RanaweeraMy little angel was really sick ....


My 10 months old baby daughter got really sick last week. She was suffering with fever for 7 days. Blood reports checked in two instances during that period said there was no sign of dengue fever (which is spreading around the country speedily). But the last report which we took on the 7th day indicated signs of a bacterial attack to her. Her pediatrician asked us to admit her to the hospital immediately. But the hospital was full and we came home with instructions from the doctor to give some other medicine and bring her back in the morning. She replied for the the medicine and we all including her doctor were really pleased to see her change.

She was normal all throughout Saturday and Sunday and even Monday morning....She is still under antibiotic..

The interesting thing with my Sanuthi is no matter how high her fever is she was very active all though out. She'll laugh and crawl and stand up and dance and do whatever possible she can copy from her akkiya.

I'm glad to have her health back in normal state. Now I need to fill her little tummy at all possible chances and bring back her lost weight...!




Ayanthi AnandagodaThe Cartoon Project


My latest project has everything to do with cartoons. I’ve seen some crazy stuff only for today. Here’s one that I found quite amusing.
shuffle
.. and here’s another:
plug-in

Supun KamburugamuvaStill Sri Lanka is a Developing Country, WHY?

Some people say it is the fault of politicians. But is it true? Can we put the blame entirely on politicians? After all, politicians are Sri Lankans. They grew among us before they become who they are today.

Corruption and our people’s un willingness to develop this country are more conventional views of this problem. But I thought of looking at in a different perspective.

I guess the problem has its roots in our own (Sri Lankan’s) mind set and attitude. Specially Sinhalese people. It is the mind set we got from the English.

We always think that government should do everything. When oil prices go up we put the blame on government. When our living conditions are getting low we put the blame on government. We get out education for free. We get out healthcare for free. School children get there transportation almost free of charge. When the prices go up we go to street and demand increments in the salary. But if we are not producing, how can the government increase the salary? This thinking is of people who don’t have a pride in themselves, who don’t believe in themselves.

What we should have done is, work harder than we normally do, instead of waiting for government to take care of everything. That is what have been done by all the great nations of our time. I believe our nations mind is changing in this direction. But the progress is slow.

The next thing I like to highlight is Sri Lankan’s desire to make big houses and settle. Most people want to make the biggest house possible. They tend to get the biggest loan they can, by committing to a life long debt. And they also want to get a vehicle. All these things are done on loans. If half of these people spend there money in investments rather than wasting it for some big fancy houses, this country will be a developed one soon.

Milinda PathirageFree Class on SOA Security Standards and Best Practices

This week's WSO2 Summer School class features SOA security standards and best practices.

IT architects and developers who want to learn SOA security and identity management best practices are invited to attend “Security in SOA.” This interactive, online class is being offered at no cost as part of the WSO2 SOA Summer School program. It will be held on Thursday, July 2, 2009 at 9:00 a.m. Pacific.

The two-hour Security in SOA class will focus the implementation of security and identity management as a service using the two emerging open, user-centric identity standards: OpenID and Information Cards, as well as XACML for fine-grained authorization. Attendees will learn about Web services security standards, including WS-Security, WS-Trust, WS-Secure Conversation, and WS-Security Policy. The course will also review Information Cards as an application of WS-Trust, and the Oauth protocol for secure API authorization.

Find more information at http://wso2.com/about/news/wso2-summer-school-features-free-class-on-soa-security-standards-and-best-practices/.

No related posts.

Related posts brought to you by Yet Another Related Posts Plugin.

Ayanthi Anandagoda5 day week


What a week it was! I started it listening to James Clerk speak on M. The day ended with a business get together at Barefoot Cafe’ celebrating the official launch of WSO2 Inc. locally. With the rest of the day spent at marketing meetings, Tuesday night was team dinner. I skipped that, as I was worried that I wouldn’t make it for Gayani’s wedding, the day after. And, I couldn’t risk that.

This beautiful girl got married on a beautiful Wednesday morning, and we were all there to witness the ceremony. I’ve been to quite a few weddings, but this one was very special. Apart from having worked with her for the last 3+ months, in which she proved herself as a very talented and a committed person, I also found her to be a good friend and a lovely person. Amidst a pile of work at office, and lots happening at home, she together with her fiance’, pulled off a fairly tale wedding that we enjoyed heaps.

Despite all great things that were taking place, there were also a couple of baffling incidents as well.

First and the most disturbing was the death of a girl from College, who was shot killed together with her mom and dad by her very own husband. Lakmali Perera aged 26, leaves behind her 2 young children, who will not only have to fend for themselves but will have to bear the shame of this shocking tale. Newspapers also reported that, at the time she was killed Lakmali was 2 month pregnant with the couple’s 3rd child.
On hindsight, I remember how hard growing up was. Without parents around, and such a huge tragedy to shoulder – the fate of these 2 young children are looking very wicked indeed. Sadly such is life.

Michael Jackson
As if things weren’t bad enough, there was also the terrible news of Michael Jackson passing away that we were woken up to on Friday morning. We grew up with listening to him perform those breathtaking performances. There were quite a few in school who mimicked his exact moves and to date I have not forgotten their performances in school talent shows. Whatever the world said about Michael Jackson, it must not have been easy being in his shoes. We loved him and will always cherish him for who he was. Long live the legend.

With all that’s happening around me, I remembered an old poem by Rudyard Kipling.

IF

If you can keep your head when all about you, are losing theirs and blaming it on you.
If you can trust yourself when all men doubt you, but make allowance for their doubting too. If you can wait and not be tired by waiting, or being lied about – don’t deal in lies.
Or being hated, don’t give way to hating. And yet don’t look too good – nor talk too wise.

If you can dream, and not make dreams your master. If you can think, and not make thoughts your aim. If you can meet with triumph and disaster, and treat those two impostors just the same. If you can bear to hear the truth you’ve spoken, twisted by knaves to make a trap for fools, or watch the things you gave your life to, broken, and stoop and build ‘em up with worn-out tools.

If you can make one heap of all your winnings, and risk it all on one turn of pitch-and-toss
And lose, and start again at your beginnings. And never breath a word about your loss;
If you can force your heart and nerve and sinew, to serve your turn long after they are gone,
And so hold on when there is nothing in you, except the Will which says to them: “Hold on!”

If you can talk with crowds and keep your virtue, or walk with kings nor lose the common touch,If neither foes nor loving friends can hurt you. If all men count with you, but none too much. If you can fill the unforgiving minute with sixty seconds’ worth of distance run,
Yours is the Earth and everything that’s in it.

And, which is more – you’ll be a Man, my son!

Eran ChinthakaOptimizing MPIs for multi-cores : Thoughts

MPI is still the programming model for most of the scientific applications which runs on super computers. Yes one could argue that map-reduce, dryad style models are coming up, but they are good for embarrassingly parallel apps or they don't exploit the fast interconnects within nodes. Anyway its a different debate.

When we look at current scientific apps running on super computers, they are already parallelized, exploiting most of the MPI constructs. MPI programming model encourages programmers to send messages and pass data around the network. But the problem with MPI applications is that, when we increase number of CPUs, we sometimes get diminishing returns (meaning anti-scaling) , and at one point it starts to give negative effect reducing the perfomance. The reason for this is that due to the increase amount of data being transmitted in the network, with the increase number of CPUs, the communication overhead exceeds actual computation and also saturate the network.

Recently I got to talk with scientists from three different domains and all of them were whining about the network saturation. The naive solutions to this problem are
  1. change their implementation algorithms to reduce the communications (oops, I thought we wanted to exploit the fast interconnects)
  2. optimize the MPI usage by using proper MPI constructs . For example using MPI_Reduce rather than using MPI_send to single node and it reducing it and doing MPI_Bcast. Remember MPI_Reduce exploits the network topology and do a hierarchical reduction.
But with the emergence of multi-cores, this problem gets a better solution, in addition to the naive ones. The idea is to mix the SMP model with MPI model, by using multi-threading within the same node and using MPI for intra-node communication.
(I know this idea is not new [1], [2], but it was very exciting to me still especially with some of my current experiences with it. )

Let's say we have an 8-core 100 node cluster (when I first get to use 2000 core clusters, yeah I was nervous and excited too :) ). This will enable us to run a job on 800-cores and make all these 800-cores banging the network. But rather than scheduling it at the core level, how about scheduling at node-level for 100 nodes and using SMP, with 8 threads each, within a node (same 800-processes)? This will cut down the network traffic, at most 8 times (the number of cores), depending on the application. Not only that, we might see an increase on performance as within each node, 8 processes are on the same address space and communication among them will be much much faster.

Exploiting this requires a change in the application too. One has to use the main thread, in each node, for MPI communications and carefully manage multi-threads within it. The challenges with this hybrid approach includes, but not limited to

  1. Handling multi-threads. Yeah we all know how cumbersome it is
  2. With some implementations, only the main thread is allowed to do MPI calls. So there can be a slight bottle-neck if the threads try to connect to processes that are not on the same address space.
  3. Main thread has to manage all the threads, divide the work/data among the threads, aggregate them before sending to other nodes, control intra-node communication, etc.,
  4. Debugging. Believe me, its very hard and painful.
I think MPICH2 and OpenMP already enable SMP and MPI hybrid model, but not sure how good or convenient they are.

What I like to have is something like in DryadLINQ, where users will write on a bit higher abstraction and the framework will optimize based on the network topology and machine configuration. But I guess we will have to wait till the next generation of programming models/frameworks to see things like that.

Charitha KankanamgeBusiness activity monitoring (BAM) with WSO2 Governance Registry

BAM refers to the aggregation, analysis, and presentation of real time information about activities inside organizations and involving customers and partners. The main benefits of BAM are to enable an enterprise to make better informed business decisions, quickly address problem areas, and re-position organizations to take full advantage of emerging opportunities.
BAM solutions often present information on dash boards using various graphs.

WSO2 Governance Registry provides with BAM functionality which enables users to aggregate various web services data and visualize them using dashboard gadgets. In this post, I'll describe how you can add a remote server for monitoring and generate graphs.

Pre-requisites:
Download and install (Unzip the binary) WSO2 Governance Registry-3.0.0-beta1 release from here
We will refer to the unzipped directory, Greg_Home

Step 1
Start WSO2 Governance Registry server by running wso2server.bat{sh} from Greg_Home/bin

Step 2
Access the management console of Governance Registry by using https://localhost:9443/carbon
You can log in to the console with default administrator credentials (admin/admin).
You will be landed in the Home page of WSO2 Governance Registry.



Step 3
As the first step of activity monitoring, we need to add a server from which the data can be collected. In this post, I'll use a WSO2 Web Services Application Server (WSAS) instance running on my local machine as the monitored server.

Click on Monitoring servers at the left navigation of WSO2 Governance Registry console. You will be directed to the Monitored servers page. Click on Add server link to add an external server for monitoring.



Suppose the WSAS server instance (the monitored server) is running on https port 9444 on my local machine.
Enter the serverURL, https://localhost:9444
Enter WSAS administrator credentials (username=admin, password=admin)
Click on Add. You will get "Server successfully added" message.

Step 4

Now we have added a server instance to monitor. Lets gather the service statistics and configure dashboard gadgets to visualize data.
Click on Main Dashboard in the left navigation menu of Governance Registry management console. You will see the Dashboard page as follows.




Step 5
Select the first gadget, Messages received in last minute, and click on configure tab. Select https://localhost:9444 from the server dropdown list.


When you select a server from the drop down list, the services list will also get populated, so that you can select one of the services hosted in your server. In this example, I'll use the default HelloService.
Now click on Display tab. An empty graph will be shown as given below.



Step 6
Now, invoke HelloService multiple times (you can use Tryit tool or SOAPUI) and refresh the dashboard.
You will see that the Messages received in last minute graph is being populated.

Similarly, you could try with the other graphs as well.

Charitha KankanamgeWSO2 SOA Summer School - Security in SOA

Prabath Siriwardana, a colleague at WSO2, doing a webinar on Security in SOA on 2nd of July 2009.
You can register from here

Prabath SiriwardenaWSO2 SOA Summer School - Security in SOA : The brain friendly edition of complex security specs

I'll be doing the webinar, WSO2 SOA Summer School: Security in SOA on 2nd of July - next Thursday.

As many businesses move ahead with SOA, security and identity management need to be made available as a service in the architecture in a consistent and reusable way across all applications.

During this webinar I will focus on implementing key security standards and identity management for SOA with regards to two emerging user centric identities: OpenID & Information Cards, and also XACML for fine-grained authorization.

If you are yet to register - do it today from here.

I hope you'll enjoy this session and learn Security concepts in a brain friendly manner.

Supun KamburugamuvaGraduation Day

June 25th, 2009 was a special day for us. It was our convocation that made this day so special.

IMG_2720

I got my Bachelor of Computer Science and Engineering degree formally from the University of Moratuwa, Sri Lanka.

The ceremony was nicely organized. Everything was on time, no boring talks.

After the convocation, we stood in a line for 3 hours to take a photo. This is something I will never forget for sure.

Tyrell Perera7 Killer Tips For Optimizing Your YouTube Videos

Download video script from here.

The 7 tips are:
  1.   Create outstanding content
  2.   Optimize your YouTube Channel
  3.   Use keywords cleverly and in the right places
  4.   Add URL's in the right places
  5.   Link to your videos from where ever you can
  6.   Provide plenty of social proof for your videos
  7.   Ping your YouTube channel as soon as you add new content



Saminda AbeyruwanPHP 5 on Tomcat

Recently I came across this article on configuring Tomcat (>= 5) to interpret PHP 5 scripts. This is developed by Quercus. There is an open source version with GPL license. (oh no!).

Anyways, one can configure Tomcat to work with PHP in 30 seconds and it is quite interesting. There are three jars associated with this task, quercus.jar, resin-util.jar, and script10.jar.

Well these jars are not OSGi compatible. It is simple to convert these to OSGi bundles and I am really looking forward to see how these behave in Equinox. You can have servlets, jsp, etc plus php in one container. Owesome!.

Ajith RanabahuTwitter, Ruby on Rails and Jack Dorsey

Jack Dorsey [@jack] gave a talk at IBM research today. He came 'plain' with no slide deck but it was a great talk and Jack is an exciting speaker [ at least for me, he has the geek appeal :)].

IBM Research Talk with Twitter's Jack Dorsey from IBM Research on Vimeo.


Jack talked about the history, his obsession with couriers and dispatchers etc and gave an exciting answer to one of the questions I asked :)

Question: Do you think that your initial choice of technology effected the progress of twitter ? in other words If you were to do it again would you use rails or something else ?

Answer: [Not in the exact words but the intent and meaning is not modified. I did take a look at the recording. The time in the video are from 53.31 onwards ]

Yes. For example the use of Rails made the application accessible to people withing 2 weeks! The fact that people saw the application and reacted to it with such a short time was very important. Florian Weber , One of the Rails core committers was in the team (with close ties to DHH) and that also was enticing in choosing the framework.
The mistake we did was putting it all out there. We did not follow a controlled expose methodology and that is what came to bite us.
As for the technology perspective I would not have changed anything! We would be cautious and expect explosive growth but the platform would have been the same.

--

Obviously the actual answer is longer and the above is just the gist of it. However given that Twitter is the poster child for Ruby on Rails and Twitter reportedly had so many hiccups, it was surprising to hear Jack say this. His point was that because of the technology they were able to get the look and feel and the functionality rapidly and that made what is Twitter today.

The importance of this statement is that it is a realization of the wonder of rapid development with agile frameworks :) I have friends who believe that everything need to be done with basics without using packaged functionality. Also I've seen many efforts in the early phases of projects (sometimes simple ones that may not even go beyond a proof of concept) that focus on premature optimization and finally result in horrible code that is extremely difficult to comprehend. The sad part is that sometimes it is deemed that such complexity is necessary ['How are we going to efficiently use our memory then ?' ]. Jack answers all these 'fallacies' [ that is exactly how I see them ] by endorsing rails :) His point is that what is important , especially in socially driven applications such as Twitter is agility. Agility comes with more abstraction !

These days I work with Rails everyday and given the complexity of the application suite we (Max, Roy and me) are building, if we did not have Ruby on Rails, we wouldn't have done even half the stuff ! Its amazingly productive and given a good rails tool set (I use Eclipse Aptana studio - free version of course) it becomes a really good competitor to any Web development framework. And Jack just polished the chrome making rails shine more :)

Tyrell PereraMore than a paradise, more than a small miracle... It's Home!

Sri Lanka Tourism officially launched its new logo and tagline Sri Lanka Small Miracle on the 23rd of June 2009, with the ushering of peace in a new era.


Prabath SiriwardenaSOA Summer School: Scalable SOA by Samisa

Samisa will be doing a presentation on the $subject in few hours time.

Serious business applications that demand high volumes of transactions are most often based on SOAs. Clustering technologies are critical for some of these deployments to help achieve load balancing and high availability. This session digs deep into the scaling techniques that can be used in SOA deployments that demand high throughput and high reliability.

If you are yet to register - still its's open - further details here.

Tyrell PereraTrust the Art, Not the Artist

A thought provoking article for those of you who are fans of Steve Jobs. Not of his work, but of his leadership style. This article answered a lot of questions that went through my mind while studying "Trait Theories" last semester, especially "The Great Man Theory". Mr. Jobs was the first leader who came to my mind the moment I heard it. And then, as most would probably do, I wondered, "If this theory is a challenged as inaccurate, how did Steve Jobs become so successful?". This article answered that question too. Good read.



Decoding Steve Jobs: Trust the Art, Not the Artist - Bill Taylor - HarvardBusiness.org
"Leaders who want to both change the game and stay in the game for the long haul have come to appreciate the power of "humbition" over blind ambition. What's humbition? It's a term I first heard from Jane Harper, a nearly 30-year veteran of IBM. It is, she explains, the subtle blend of humility and ambition that drives the most successful leaders — an antidote to the know-it-all hubris that affects so many executives and entrepreneurs.

Humility is not part of the Steve Jobs leadership repertoire — and that's worked out fine for him. But humility has become a crucial part of the job description for leaders who aren't Steve Jobs. So marvel at his products, applaud his feel for design, wonder at his capacity to cast such a large shadow over so many industries — and, by all means, pray for his speedy recovery and long health.

But don't think you'll do better as a leader by acting more like Apple's leader. Trust the art, not the artist."


Prabath SiriwardenaExtracting SAML assertions from a proxy service and adding them back to the service behind

This blog post explains how to do the intial setup with WSO2 ESB and the Identity Server to develop claim aware web services - please go through it first.

There - we get the SAML Assertion to the proxy service.

Here what we are going to do is - to extract SAML Assertions from the Security header of the incoming message and add those as a custom header to the message going to the actual service.

First, please download the org.wso2.carbon.identity.samples.saml.mediator-2.0.0.SNAPSHOT.jar from here.

Stop - the ESB if it's running already.

Copy the above jar to [ESB_HOME]\webapps\ROOT\WEB-INF\plugins\console.

Open [ESB_HOME]\webapps\ROOT\WEB-INF\eclipse\configuration\org.eclipse.equinox.simpleconfigurator\bundles.info and add the following entry to the end [one line].

org.wso2.carbon.identity.samples.saml.mediator,2.0.0.SNAPSHOT,file:plugins/org.wso2.carbon.identity.samples.saml.mediator-2.0.0.SNAPSHOT.jar,10,true

Start the ESB with following.

\> wso2server.bat -cleanCache

Now, you need to add the above mediator to the in sequence of your proxy service as a Class mediator.

Following is the synapase configuration for the in/out sequences of the proxy service.

<syn:proxy name="test" transports="https http" startOnLoad="true" trace="disable">
  <syn:target>
    <syn:inSequence>
      <syn:class name="org.wso2.carbon.identity.samples.saml.mediator.SAMLAttrMediator"/>
      <syn:header xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" name="wsse:Security" action="remove"/>
      <syn:log level="full"/>
      <syn:send/>
    </syn:inSequence>
    <syn:outSequence>
      <syn:send/>
    </syn:outSequence>
  </syn:target>
</syn:proxy>
You can clearly see Class/Header/Log & Send mediators are in the in-sequence and Send mediator in the out-sequence.

Now - the question is how do we capture the SAML attributes from the actual service.

You can call the following method from any service method to get the attributes in a HashMap.

getAttributes(MessageContext.getCurrentMessageContext());

Following is the code for getAttributes() method.

private static final String USER_ATTRIBUTES_ELEMENT = "UserAttributes";
private static final String USER_ATTRIBUTES_NS = "http://attributes.saml.axis2.org";
private static final String ATTRIBUTE = "Attribute";
private static final String ATTRIBUTE_NS = "AttributeNamespace";
private static final String ATTRIBUTE_VALUE = "AttributeValue";
public final static String SAML10_NS = "urn:oasis:names:tc:SAML:1.0:assertion";
public final static String SAML11_NS = "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1";
public final static String SAML20_NS = "urn:oasis:names:tc:SAML:2.0:assertion";

public Map getAttributes(MessageContext messageContext) {
OMElement header = null;
OMElement userAttr = null;
Iterator iterator = null;
String samlNameSpace = null;

header = messageContext.getEnvelope().getHeader();
userAttr = header.getFirstChildWithName(new QName(USER_ATTRIBUTES_NS,
USER_ATTRIBUTES_ELEMENT));
iterator = userAttr.getChildrenWithName(new QName(SAML10_NS, ATTRIBUTE));

if (iterator.hasNext()) {
samlNameSpace = SAML10_NS;
} else {
iterator = userAttr.getChildrenWithName(new QName(SAML11_NS, ATTRIBUTE));
if (iterator.hasNext()) {
samlNameSpace = SAML11_NS;
} else {
iterator = userAttr.getChildrenWithName(new QName(SAML20_NS, ATTRIBUTE));
if (iterator.hasNext()) {
samlNameSpace = SAML20_NS;
}
}
}

if (samlNameSpace == null) {
// Unsupported SAML token type;
return null;
}

Map attributes;
attributes = new HashMap();

while (iterator.hasNext()) {
OMElement attr = iterator.next();
OMElement attrValElement = null;
String attributeName = null;
String attributeValue = null;
attributeName = attr.getAttributeValue(new QName(ATTRIBUTE_NS));
attrValElement = attr.getFirstChildWithName(new QName(samlNameSpace, ATTRIBUTE_VALUE));
attributeValue = attrValElement.getText();
attributes.put(attributeName, attributeValue);
}

return attributes;
}
Also make sure you import following packages as well.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.context.MessageContext;

Tyrell PereraPidgin won't connect to Yahoo since June 17th? Here's a workaround

Pidgin and Yahoo
As of June 17, 2009, Pidgin users are having trouble connecting to Yahoo! IM accounts. Here is a summary of the problem:
Yahoo! appears to be upgrading their servers to a new version of their software. This new version requires a new authentication method. The latest version of Pidgin, 2.5.6, does not support this new authentication method. The next version, 2.6.0, will, but it has not yet been released.

The above link contains a set of alternate IPs (servers that are yet to be upgraded by Yahoo). Just go to Accounts -> Manage Accounts -> Modify -> Advanced -> Pager Server and try testing with those IPs. I can connect using cs101.msg.mud.yahoo.com ... for now.

UPDATE: Pidgin has released version 2.5.7, which solves this problem. Visit the Pidgin site for the update.


Charith Dhanushka WickramarachchiAxis2 SMS Transport

Apache Axis2 is an opensource framework for webservices which is widely used today ,and its implementation is available in both java and c. Axis2 is independent of the underlying transports which takes the Messages to it.Axis2 Engine is concentrating on the SOAP processing. Users can select transports to suite their requirement and that transports are responsible for injecting Axis2Messages to the Axis2Engine.So Axis2 Engine is dealing only with this Axis2MessageContex build from the underlying transport framework.

I' m writing SMS Transport as my Google Summer of Code 2009 project for Apache Axis2 which is a project focusing on implementing a SMPP support for Axis2java (And also it will able be used in Apache Synapse too Since Synapse uses the same axis2Transports ) by which Axis2 will be able to communicate with SMSCs (Short message service centers) or Any other Message centers that support SMPP . And also in this project it will make enable axis2 to communicate with Simple GSM modems.

At the beginning of the Project I considered the Word "SMS" as a generic one where there can be many implementations.Currently it support the SMPP protocol to send receive SMS via Message Centers.The SMS transport is designed and implimented in a such a way that it can be easyly extended to use any other implimentations or to use any SMS message formats.

SMPP - Short Message Peer to Peer protocal is an open, industry standard protocol
designed to provide a flexible data communications interface for transfer of short message data between a Message Center, such as a Short Message Service Centre (SMSC), GSM
Unstructured Supplementary Services Data (USSD) Server or other type of Message Center
and a SMS application system, such as a WAP Proxy Server, EMail Gateway or other
Messaging Gateway.The advantage of supporting SMPP protocol with the Axis2 SMS Transport is it can be use to send receive high volume of Short messages very fast.SMPP protocal is a Application layer protocal which can be used over TCP. There are many SMPP gateways avalilable in the world.and now almost all the Message centers support SMPP.Click is a good example of a SMPP sms gateway.
https://www.clickatell.com

SMS Transport will also support send receive SMSs using a Simple GSM modems attached to the Computer.This sms implementation can be used when the data Traffic is very low.A Typical GSM modem can only handdle about 6 messages per minute.If a user need to have a heiger data Traffic with the Axis2 the SMPP implimentation can be used.

following is an diagram of the overview of SMS Transport




Extending SMS Transport

SMS Transport was design to be a extensible one.where it provides proper interface to extend and reuse the current implementations.

If we focus on Axis2 SMS Transport the Axis2 dependent Transport senders , Transport listeners , Message Builders , Message Formatters are put in the generic SMS layer. That layer will be depending on the underlying implementation layer which only focus on the current SMS implementation which will have nothing to do with Axis2. So the advantage is that the Developers who need to write another implementation need not to worry about the Axis2.They just need to rely on the provided API and focus on their Implementation logic.

Other Extensible point of the SMS Transport is the Extending MessageFormatters and Message Builders.Users can write there own Message Builders and formatter to send receive any message formats they like by implementing the interfaces coming with the SMS Transport.

This blog is only a overview of the Axis2 SMS Transport and there will be documentation coming explaining the configuration , and extensibility of this Transport.

Dimuthu GamageApache Stonehenge Releases First Milestone

Apache Stonehenge, A project to demonstrate the interoperability between heterogeneous platforms has done their first milestone release few days back.

The first milestone demonstrate the interoperability between

  1. .NET – Microsoft WCF implementation
  2. Java – WSO2 Web Service Application Server (WSAS) implementation
  3. PHP – WSO2 Web Service Framework for PHP (WSF/PHP) implementation

Each of these technologies has implemented a Stock trader application with Business Service, Order Processor and Trader Client components. You will be able to assemble the application by mixing components from any of the above implementations.

It provides you a great sample on using basic web services features (SOAP, WSDL etc..) and WS-Security across the above platforms.

If you are interested, you can download the sources and binaries from here, http://www.apache.org/dist/incubator/stonehenge/. Installation guides and other documentations can be found from here, http://cwiki.apache.org/STONEHENGE/

Tyrell PereraMahindra Satyam; Re branded Satyam

Satyam Uses Mahindra Satyam Brand to Reflect New Owners - CIO.com - Business Technology Leadership
Tech Mahindra, an outsourcing company of India's Mahindra Group, has acquired a 31 percent stake in Satyam. Tech Mahindra made the acquisition through a wholly owned subsidiary called Venturbay Consultants.
Click here to find out more!

Tech Mahindra and Venturbay also made an open offer earlier this month to buy 20 percent more of the equity in Satyam from existing shareholders.


Tyrell PereraThe 10 Questions Every Change Agent Must Answer

The 10 Questions Every Change Agent Must Answer - Bill Taylor - HarvardBusiness.org
It's time to do — and get — something different. Here, then, are ten questions that leaders must ask of themselves and their organizations — questions that speak to the challenges of change at a moment when change is the name of the game. The leaders with the best answers win.

My favourite ..

6. Can your customers live without you?
If they can, they probably will. The researchers at Gallup have identified a hierarchy of connections between companies and their customers — from confidence to integrity to pride to passion. To test for passion, Gallup asks a simple question: "Can you imagine a world without this product?" One of the make-or-break challenges for change is to become irreplaceable in the eyes of your customers.


Ruwan LintonWSO2 ESB 2.1 is just about to meet the enterprise

So, first of all... I was not being able to even write a few blogs in the past few months because we are trying very hard to give the birth to the new child of the WSO2 ESB family which is its 2.1 version.

Now it is available for you to try out in the form of beta1. It is interesting that how WSO2 defines the releases.
  • Milestone releases - Each and every milestone will add a set of new features, but we try our best to limit the new features in a given milestone to a absolute minimum (like only one) to prevent the issue of finding which causes the regression X
  • Alpha release - All features are complete, but there is no guarantee about the stability
  • Beta releases - All Level 1 issues are fixed and the release is guaranteed to be stable from the development perspective
  • Release Candidates - All Level 1 and Level 2 issues are fixed and the release is ready to go for the GA
  • General Availability - Ready for the Production
So, currently WSO2 ESB and its all twins including WSAS, G-Reg and IS are on the Beta phase waiting for the birth to the enterprise...

You could try out this and give us the feed back on any sort of an improvement or issues in the CARBON JIRA

Please note that how you run the samples in the WSO2 ESB has been changed and now you are provided with a new script to run samples... which just do some preparation for the samples before runing the ESB. You need to use the wso2esb-samples.sh with the -sn option.

Even though the release is available as beta for the public internally the development is just about to reach the RC phase with no Level1 and Level2 issues. You could see this with the CARBON JIRA where the active development on the release is happening. I need to sync up the ESB JIRA coz most of the issues reported there are already fixed..

Waiting for your feed back for the birth...
The WSO2 ESB 2.1

Denis WeerasiriGraphical representation generation for a WS-BPEL business process


This blog post is focused on one of my project I contributed to during my internship. This post will also be helpful on who are interested in SVG (Scalable Vector Graphics), BPEL (Business Process Execution Language) and BPM (Business Process Management).

WS-BPEL (Web Services Business Process Execution Language) is XML based programming language used for develop business and scientific work-flows.
It can be used to define Abstract and Executable business processes. Work-flows, implemented in WS-BPEL exchange information by using Web service interfaces.

As previously mentioned WS-BPEL is a XML based language, it does not define a graphical representation for the process or provide any particular design methodology for processes. So there is no any standard graphical notation for WS-BPEL. But most persons find visual notations easier to learn and apply, perhaps because they process visual information more efficiently than textual information, which led some vendors to define their own graphical notations.
The Business Process Modeling Notation (BPMN) is a standardized graphical notation for drawing business processes in a work-flow.

My project was to design and develop a software component that extrapolate the necessary information for displaying a WS-BPEL work-flow instance as an SVG representation. Before get-in to the design phase I researched on the following key-areas.

  • Familiarizing with WS-BPEL language, with the existing BPEL-supporting software and with the Web Service stack
  • Familiarizing with the SVG libraries and features
  • Analyzing the previously done BPMN work-flow and BPEL work-flow viewers and understanding its design and functionalities
  • Analyzing how the BPEL process engine can capture instance-related information in terms of work-flow status

The project was targeted on WSO2-BPS and Apache-ODE which are open source Java-based BPEL engines, released under Apache License 2.0.

I used Apache Batik libraries for manipulate SVG documents.
SVG is a XML-based specification to describe two-dimensional vector graphics. SVG is also well-suited to smart phones and mobile devices. All major modern web browsers except Microsoft Internet Explorer support and render SVG markup directly. To view SVG files in Internet Explorer, users have to download and install a browser plug-in.

Final outcome is similar to something like this.



This post is still to be completed and more information on design, the source repository locations and some original screen-shots will be published soon.

Prabath SiriwardenaWSO2 Identity Server 2.0 Overview

Tyrell PereraSouthwest Airlines' Safety Message

Southwest Airlines... More than one Lecturer have raved about their innovative approaches. From Marketing Strategy to Human Resource Management, whenever a case study is discussed, the name seems to make an appearance. How they identified Taxi Cabs as a key competitor, then focused on short-haul destinations making "traditional competitors" of a new airline irrelevant, to creativity in their in-flight service. Even in this blog, one of the Top 5 visited posts is the one I wrote about a Southwest auto check-in Mashup. Don't take my word for it, look at the Live Traffic Feed Widget at the bottom right of the page. I'm sure you'll see a few people visiting that post.



Remember that? Most of us have read the little booklet at least once and heard the mandatory safety message mechanically recited by a Flight Attendant. Apparently some at Southwest are creative enough to make even that boring episode fun. "There may be 50 ways to leave your lover, but there are only 4 ways out of this airplane.", is one example. Here's another I came across today.


Supun KamburugamuvaSouth Africa doesn’t have the luck to Finals

I cannot remember a single instance where South African Cricket team reached a final in an important tournament. It seems they have a curse on finals. In most of these tournaments South Africa was the favorite until they reach semi finals. When they reach semi finals they always blew it up.

1999 World Cup

South Africa and Australia ties the game in semi finals, Australia came to the finals due to run rate  

2003 World Cup

Pool B, Sri Lanka vs South Africa, this is what happened

Before the South Africa v Sri Lanka game was delayed and ultimately called off for rain, the South African team gave to the batsmen a table showing the equivalent number of runs required after each ball, to equal the Sri Lankan total, for the remainder of the match assuming that rain would conclude the game after that particular ball. One ball before the rain interruption began, South Africa scored the requisite number of runs shown on the table. On the next ball it appeared that the batsmen could take a run but they decided not to take a risk, believing that their table showed the number of runs to win, not to tie. Thus the match ended in a tie, and South Africa lost all mathematical chance of proceeding to the Super Six

2007 World Cup

Semi finals, South Africa vs Australia, Australia won

2009 Icc T20 World Cup

Semi finals, South Africa vs Pakistan, Pakistan won

untitled3

untitled

untitled1

Ruwan JanapriyaRobotics Software

robotics.youngster.com has compiled a nice list of Robotics related software. Have a look at here http://robotics.youngester.com/2008/11/robotics-software.html

Ruwan JanapriyaComputer Vision to determine the shape of your unclad body ;-)

Extracted from [1], The newest computer vision technology can't literally see through your sweater and slacks, but it can determine the shape of your unclad body. Brown University computer scientists have developed software that takes ordinary images of people dressed in street clothes and digitally peels away the layers to determine their ...

Ruwan JanapriyaTreat your keys like you treat your credit card and “keep it in your pocket unless you need to use it.”

University of California, San Diego computer scientists have built a software program that can perform key duplication without having the key. Instead, the computer scientists only need a photograph of the key. In this "Sneakey" Computer Vision project, features of the key is extracted from the photograph and accordingly a ...

Ruwan JanapriyaDeveloping a Wordpress theme from scratch!

It didn't take too long for me to get rid of the previous "black" Wordpress theme I've been using. But the most immediate reason was some encouragements given by few friends. Okay, that is how the fun began! :). First, I wanted to use the layout I used back in ...

Ruwan JanapriyaOld Anandians and Nalandians who put an end to the war in Sri lanka

Today someone forwarded me a mail on the $subject. President of socialist republic of Sri Lanka - Hon. Mahinda Rajapakse (Nalandian) Prime Minister of Sri Lanka - Hon. Ratnasiri Wikramanayake (Anandian) Secretary of Defence - Gotabaya Rajapakse (Anandian) Army Commander - Lt General Sarath Fonseka (Anandian) Navy Commander - Vice Admiral Wasantha karannagoda (Anandian) 57 ...

Ruwan JanapriyaLenna and Image Processing

The Lenna (or Lena) picture is one of the most widely used standard test images used for compression algorithms. The comp.compression FAQ says the following: For the curious: 'lena' or 'lenna' is a digitized Playboy centerfold, from November 1972. (Lenna is the spelling in Playboy, Lena is the Swedish spelling of ...

Ruwan JanapriyaFinding Naked People (Image Processing)

lolz, have a look at this blog on Keeping Abreast of Pornographic Research in Computer Science

Ruwan JanapriyaSixth Sense : A Nice Fluid Interfaces Project

Today I came across a nice project: Sixth Sense, by MIT Media Lab. More than anything I would love to buy that tiny projector!!!! Wonder how much it cost. The project web site[1] says, 'SixthSense' is a wearable gestural interface that augments the physical world around us with digital information and ...

Ruwan JanapriyaLearning OpenCV from Gary Bradski & Adrian Kaehler

If you are new to OpenCV or If you want to expand your knowledge in OpenCV you would find following book is useful. I've been using OpenCV for almost 6 years up to now. It is "the" Open Source Computer Vision Library out there. The book includes: ...

Ruwan JanapriyaArtificial eyeball does away with distorted images

I found this interesting article [1] at NewScientistTech written by Kurt Kleiner. They have a nice approach to create a curved digital sensor (spherical) mostly using conventional photolithography. There can be endless applications since this will help to get wide-angle but less distorted images from a small camera. Also the ...

Chintana WilamunaCatalyst

Last time I looked at Catalyst for a project, the time was really tight and had to do it by other means. This time however, I had slightly more time available so I started from Catalyst::Manual::Tutorial and boy, the docs are amazingly well written. Kennedy Clark has done a wonderful ...

Chintana WilamunaBubbles

Half cups of bubbles flocking together to make it seem as they like to be close to each other so badly. Every bystanding observer will tell without a second thought that it's just gravity pulling them so hard. Like they have a choice. Glancing through the see through walls, holding ...

Chintana WilamunaInstalling Erlsom using CEAN

I've already installed Erlang using yum in Fedora 10. I wanted to install Erlsom and it's available through CEAN. Steps for installing CEAN is explained nicely in the FAQ. Content of my VERSION file, CEAN Erlang/OTP R12B erts-5.6.5 linux-x86 devel You can find the version of Erlang installed with yum info erlang. ...

Chintana WilamunaReview: SOA Governance

SOA Governance by Todd Biske is surprisingly an easy read that explain what is governance and what does it mean in an SOA setting. It begins with a comprehensive introduction to governance and the three main important aspects, people, policies and processes. Then, he explains how to introduce SOA into ...

Chintana WilamunaBuilding WSO2 Carbon from source

Recently I built WSO2 Carbon. Here's how I did it with some help from the carbon mailing list :-) Do stick to the same build order. I did this on an Ubuntu machine. If you happen to see maven complaining about running out of memory just do, $ export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=128m" First ...

Chintana WilamunaStockTrader client using Catalyst

I've been rewriting the Perl StockTrader client using Catalyst for the past week or so. The first version of the client was done using (gasp!) Perl/CGI. So it was about time to do it right. Thanks to the excellent documentation Catalyst provide, it was a straightforward task. The main annoyance I ...

Chintana WilamunaRESTful PHP Web Services

If you've read the architectural notes about RESTful applications and want to get your hands dirty writing one quickly, RESTful PHP Web Services by Samisa Abeysinghe is a book you should read. It starts with an introduction to what REST is and surrounding technologies. Since many web applications today expose ...

Chintana WilamunaDrive as a Hummer, save as a Prius

Samisa has written a great blog post about making sensible choices in a bad economic situation. Specially making the right choices when it comes to your middleware. For the uninitiated it might feel that choosing a low cost middleware platform is like choosing low cost, small, fuel efficient car. Anyone having ...

Chintana WilamunaPlagiarism

While reading an article the other day, I just started googling some random phrases off of it and was stunned with the results. I could find the entire phrases in another source and that was not even mentioned in the article I was reading. A brief search for plagiarism will ...

Chintana WilamunaExploiting the economic crisis

By now I'm sure most of you have read more than a dozen articles about possibilities for open source products in the current economic crisis. Even for a fairly large enterprise the annual licensing fee for products that their using can be a big burden. Charging an annual licensing fee ...

Deependra AriyadewaHowto to Share mouse and keyboard with Synergy

1. Install synergy  : apt-get install synergy 2. Server configuration : synergy.conf section: =================================== screens server1: server2: halfDuplexCapsLock = true halfDuplexNumLock = true end section: links server1: left=server2 server2: right=server1 end ================================ 3. run synergy server : synergys -f –config /etc/synergy/synergy.conf 4. run client on the second machine: synergyc  --name server1   < Server IP > 5. Now move your mouse to left. You will see the mouse in your second screen.

Deependra AriyadewaRichard Stallman ( RMS ) is in Sri Lanka.

Richard Stallman ( RMS ) is in Sri Lanka. He is doing two public speeches at SLIIT and University of Peradeniya.

Deependra AriyadewaLinux turns 17

Linux turns 17. http://groups.google.com/group/comp.os.minix/msg/2194d253268b0a1b

Deependra AriyadewaSept 24 Is World Day Against Software Patents

[caption id="" align="aligncenter" width="468" caption="stop software patents"][/caption]

Deependra AriyadewaHOWTO set Network in MINIX

HOWTO set Network in MINIX 1. Create /etc/rc.net file and put IP and Default Gateway. ifconfig -I /dev/ip0 -h 192.168.1.225 -n 255.255.255.0 add_route -g 192.168.1.254 2. Set nameserver in the /etc/resolv.conf nameserver 192.168.1.254 3.  use pr_routes and the ifconfig command to check the network configurations.

Deependra AriyadewaHOWTO Compile MINIX kernel

HOWTO Compile MINIX kernel 1. Go to the MINIX source directory. cd  /usr/src 2. Compile the kernel using make. make clean make install This will recompile whole minix system. 3.    To compile kernel separately. cd /usr/src/kernel make clean make cd   /usr/src make install 4.   then reboot the system. 5. You can find the newly compiled kernel in /boot/image. # ls -l total 904 -rw------- 1 ...

Deependra AriyadewaRT HOWTO. ( based on Request Tracker 3.8.1 release and Gentoo Linux)

RT HOWTO.  ( This HOWTO based on Request Tracker 3.8.1 release and Gentoo Linux) Request Tracker is the best open source trouble ticket system. RT distributed under GNU GPL license. 1. Download the latest  RT release. wget http://download.bestpractical.com/pub/rt/release/rt.tar.gz 2. Extract the source tar -xzvf rt.tar.gz 3. Read the README file 4. Go to the extracted source ...

Deependra AriyadewaSri Lanka with in the top 10 google summer of code.

Sri Lanka came in to the top ten of the google summer of code competition in student participation. This a a great achivment of the Sri Lanka FOSS community.

Deependra AriyadewaTrolltech releases Qt under the GPL v3 license

Trolltech releases Qt under the GPL v3 license. More companies and communities are releasing sofware under GPL v3.

Deependra AriyadewaMysql ^ SUN => PostgreSQL.

What went wrong with mysql?  Grievance .. Mysql missed the IPO and the independent future of the mysql. Most of the mysql customers are on LAMP stack and they like the way mysql is developed. Now mysql with SUN and under SUN's marketing agenda. Will SUN allow the free flow of ...

Lahiru SandakithStatement of Teaching Philosophy

As a starter Teaching Assistant at my department at IUPUI, I searched for means of how i can contribute more. Some where on browsing space, I found this document from Dr Thrishantha Nanayakkara Topic : Statement of Teaching Philosophy Great Passionate Ideas as a  teacher.. Very few personalities do this..

Lahiru Sandakithසිංහල බ්ලොග් සටහන

මගේ පලමුවෙනි සිංහල බ්ලොග් සටහන ලහිරු සදකිත් ගාල්ලෙගේ Note : Blog entry was written in Sinhala Language Translation : This is my first Sinhala Blog Lahiru Sandakith Gallege

Lahiru SandakithSri Lanka in WAR, Sad.. But whats the Difference Between LTTE vs Sri Lanka Army forces

LTTE alway push their front defense with very young girls when ever they are in defense mode.. [gallery] Tribute to SL Forces .. May all the courage & blessing be with you.. I ll leave it you to imagine .. scenario vise versa.. Thats all ..

Lahiru SandakithProlog Plugin for Eclipse

Recently I tried this Prolog Plugin  and It works great !!! Its very nice to see Eclilpse evolve to all kinds of programming language not limiting its scope to imperative languages. Try and see how good job eclipse does in Declarative Languages also. !!!

Lahiru SandakithHow to get Jini Starter Kit 2.1 Installation working on Linux

I ran in to this problem when I tried to install Jini Starter Kit on Linux and had to do HEX manipulation to get it running completely When I execute the binary the error was awk: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory dirname: error ...

Lahiru SandakithGoogle New Browser .. Nice way to introduce a product.. Blogging via Comic Book

Google on Google Chrome - comic book So Goole gonna dip in to the web bowsers field also. http://blogoscoped.com/google-chrome/

Lahiru SandakithtAAre ZameeN Par (EVERY CHILD IS SPECIAL)

http://www.taarezameenpar.com/ After some time I had the fortune to watch this wonderful movie which i thourraly enjoyed watching. If you did not seen it yet, its a must watch.. Hats off to Aamir Khan for this fabulous movie. Its just a masterpiece,.. Best Film of the Year 2008. Quotes from Internet ...

Damitha KumarageSubscription manager for savan C

I have written a subscription manager for savan C implementation. According to the Ws eventing specification the subscription clients subscribe for a eventing topic which is a web service hosted somewhere. It can handle it's own subscriptions or it can delegate the subscription management to another web service(subscription manager service). In ...

Damitha KumarageWhen faced with flat tire

How many of you like to have your tire completely flat at an isolated area with 15km back to the previous town and 15km to the next town?. Well it happened to me yesterday on my bike where there is no spare wheel for rescue. I inspected the flat tire ...

Damitha KumarageWhat is good for Axis2/C pthreads or cbthreads?

Dinesh Premalal in his blog post on Axis2/C with cbthread explain that using cbthreads he ran about 100,000 concurrent requests using Axis2/C client. The reason for this achievement is because of the non-preemptive and continuation-based threads implemented with cbthreads. However in his next blog Axis2/C with pthreads he goes on ...

Damitha KumarageAccess secure enabled web services from command line

In my article on WSF/C wsclient command line tool I have explained briefly on how Rampart/C is used to provide security for messages sent using wsclient. Here I would like to explain in detail some examples. I assume you have installed Rampart/C and wsclient as explained in respective documentations. When you ...

Damitha KumarageBuilding Axis2/C from source

If you need to use Axis2/C and related project for serious work then you might need to understand the internals of its build system. Axis2/C uses GNU auto build tools to build the project libraries. A simple and good reading on the subject can be found here. If the usual configure, ...

Damitha KumarageAxis2/C Performance

Axis2/C benchmark performance test results are published here

Damitha KumarageReliable Messaging with Mercury

There is this new implementation of Reliable Messaging from WSO2 called Mercury. You can download it from here. There is discussion going on as to whether Mercury should be sequal to Sandesha2 as Sandesha3 or not. Ppl who argue against it has basically following points 1. When adding features to current ...

Damitha Kumaragewsclient and amazoneclient

As I have promised earlier I have written two articles on wso2 wsclient and amazoneclient. wsclient is a wget like command line tool which is designed to consume web services from command line. Today I added the capability to add custom soap headers by using the new option --soap-header LINE. ...

Damitha KumarageSoap Action and Addressing action

For me it has alway been a headache to understand and remember the complexity behind soap action and web services addressing action. As I have again started working on WSFC/wsclient a wget like command line tool specifically designed for consuming web services, I thought of writing down the facts ...

Damitha KumarageGreat Team Work

I had the greatest teamwork experience during our off-season journey to Sri Pada couple of weeks back. Our team consisted of Kaushalya, Nandika, SanjayaR, Dinesh, Dushshantha, Amila, My brother in law(Upul) and Me. We choose the route along Kuruwita which is the longest(11.5km) and the most difficult of ...

Damitha KumarageBenchmark testing with httperf

In a previous blog I discussed benchmark testing tools I used for some benchmark perposes. At that time I really used Apache Bench(ab) for the purpose. However when I am again doing some bench mark testing I stumbled upon a new tool(at least for me) httperf which seems to be ...

Damitha KumarageMemory Handling conventions in Axis2/C

I found no documentation on basic memory handling conventions in Axis2/C. Until this content appear under a developer guide for Axis2/C, here are some facts that could be useful in preparing such document. Here I don't talk about advance facilities provided regarding memory management in Axis2/C. However I'll provide links ...

Damitha KumarageWriting robust programs in C

The draft named Robust design techniques for C Programs by David Turner introduce a modern languages like approach for exception handling in C. It speaks about four approaches for error handling in C. 1. Being extremely paranoid. 2. Implementing transactions which in concept similer to commit/rollback approach in databases. 3. Structured Exception Handling(SEH) 4. ...

Damitha KumarageTry Open Source SOA!

Good read, Mike Kavis explains the strength of open source SOA. In this article he also explain the WSO2 SOA stack. http://www.cio.com/article/440370/Tight_Budgets_Try_Open_Source_SOA_ You can find news release for the case study which is mentioned in Mike's article here.  You can download the case study here.

Damitha Kumaragelighttpd module for Axis2/C

Dinesh has developed an Axis2/C module for lighttpd (pron. lighty) a light weight web server is designed and optimized for high performance environments. It claims to power Youtube. Also see. I mentioned that Axis2/C version 1.5 reached 25K tps performance margin running on Apache2. I hope Axis2/C running as a lighttpd ...

Damitha KumarageAxis2/C and Rampart/C is used in Eucaplyptus

Axis2/C and Rampart/C is used as main technologies in an open source EC2 cloud computing implementation. See the main technologies used in this document and this. See this infoQ vidio for a presentation of Eucaplytus by its lead.

Damitha KumarageBe Humble, Be Honest

I read this article about the life style of Iranian President. This is unbelievable cosidering the fact that Iran is much more wealthier country compared to Sri Lanka. Whatever their political view every politician in Sri Lanka should consider the facts in this article seriously provided they claim themselves as ...

Damitha KumarageAn Axis2 C design issue?

There was this discussion between Sanjaya Karunasena, Samisa and me regarding the application/session scope supported by Axis2 C engine when it is deployed as an Apache module. The problem that initiated the discussion is as following. In Savan C(The WS Eventing Specification implementation of Axis2 C web services Frame Work) when ...

Damitha KumarageConfiguring Apache2 to produce core dumps

Even after setting ulimit -c unlimited in the shell I could not find a core dump file when my apache2 server crashed.  In my Ubuntu system I enabled core dump in /etc/default/apport. Still I could not see core dumps. But I could produce a core dump for a simple C program. ...

Damitha KumarageUsing valgrind to debug/profile Axis2/C

For Axis2/C developers in linux platform valgrind is a indispensable tool. It helps you debug and profile your services and modules. The gdb/valgrind is very powerful combination for debugging your applications in linux. Before you use these tools make sure that you have built your applications and Axis2/C with debugging enabled. This ...

Damitha KumarageApache Axis2/C Programming Model

I would like to talk about our programming model when it comes to Axis2/C Apache2 module. As discussed in a earlier blog suppose two requests come to Axis2/C sequentially. Say the first request is served by one apache process and the next request is served by another process. Then problem ...

Damitha KumarageAxis2/C Apache2 Module. Can it be further improved?

According to my performance testing on Axis2/C 1.5(Soon to be released) I could reach 25K tps with keep alive on. When tested with a empty module instead of Axis2/C where no handling of soap data is done but just set a HTTP_OK and return it, reached 40Ktps mark(This is also ...

Damitha KumarageUbuntu Story

My wife was asking me for some time to install linux on her machine. I thought of this. Well it take some time, not to install ubuntu. But to answer her non-stop questions on how to do this, how to do that. Last week. Behold she has installed ubuntu on ...

Damitha KumarageBenchmark testing tools for Web Services

These days I am working on some benchmark testing of Axis2/C. While looking for good tools for the purpose I came across several good candidates. I would like to discuss about some of these tools. Tools that impressed me and disscussing here are ab(apache workbench), siege, hammerhead and javabench and http_load. I ...

Damitha KumarageDeveloper Guide needed for Axis2/C internals Revisited

In an earlier blog I emphasized the importance of having a developer guide for Axis2/C internals. I think a new article Overcoming Memory Related Issues in Axis2/C published in Wso2 Oxygen Tank by Manjula Peiris is a step towards that direction.

Damitha KumarageAmazon web services client using wsclient

These days I'm working on a command line web services client to consume Amazon AWS Web services. The idea is to use this tool from command line easily to do transactions with amazon. It can search for items, then lookup for searched items for details and review the details of items ...

Damitha KumarageAbout Apache Savan/C First Release

Last week I released Apache Savan/C version 0.90 version. It can be downloaded from http://ws.apache.org/savan/c/download.cgi This release is supposed to be used with the Axis2C 1.1.0 distribution which is released recently. Key Features: 1 Support for WS-Eventing Specification August 2004. 2 Support for Subscribe, Unsubscribe, Renew and GetStatus operations. 3 Support for subscription management endpoint which could ...

Damitha KumarageThe First Impression

I'm using WSF/C in a project and here is some useful tips that we used in out project that may help WSF/ C more attractive to the linux user. There is a standard body for File System Hierarchy Standard for Unix-like operating systems. We followed that standard and make our components ...

Damitha KumarageJeep Trek through Bambarakanda

This time we decided to go on a trip on jeeps. Sanjaya and I prepared our jeeps for the journey. The route was decided to be the well known jeep trek from Kalupahana(On Colombo-Haputale road) to Ohiya through Bambarakanda falls. Participants were Sanjaya, Janapriya, Amila, Nandika, Dumindu, Dushyantha and his ...

Damitha KumarageDeepal’s Axis2 Book

After delaying for several months after purchasing the book I finally found time to read Deepal's new Axis2 book. But once I started to read it is one go read. Nice thing about the book is that for a person who has fair knowledge of web services concepts the book immediately ...

Damitha KumarageInstalling WSF/PHP on Linux

To build apache2 with debug and apr support ./configure --enable-modules=all --enable-so --enable-maintainer-mode --with-included-apr This will install apache2 in /usr/local/apache2 (You may use export CFLAGS="-O0 -g -ggdb3" before configuring) To install php with apache2 After installing apache2 as above then download and install php as below. ./configure --with-apxs2=/usr/local/apache2/bin/apxs sudo make install This will add the following entry ...

Damitha KumarageProfiling tools that I used to profile Axis2/C

Now that I have done some performance tests(Results will be published soon. In summary Axis2/C 1.5 which will be released within next week achieved 25K tps benchmark) I thought of using a profiler to see which part of codebase need further attention for improvement. I profiled with google proftools and ...

Footnotes