Coronary Angiogram, Angioplasty & Stenting

About one month ago my uncle (father’s younger brother) had a sudden pain in his heart and got admitted to the hospital. According to doctors’ diagnosis, he has got the heart disease which is called Unstable Angina. This is caused by a block in blood vessels which supply blood into our heart muscles. After one week, my uncle was discharged and back home. But after few days, he was suffering from a breathing difficulty which comes on and off time to time. As this breathing difficulty was increasing, we decided to meet cardiologist, Dr. Vajira Senarathne. His recommendation was to do a Coronary Angiogram which is also known as Coronary Catheterization.

The angiogram was done last monday and I was there. I was amazed by the simplicity and outcome of this technique. An extremely thin catheter is inserted into a blood vessel which goes into the heart. It was inserted from a place near wrist in my uncles case. But sometimes it is done from the upper area of leg as well. This catheter injects a dye into coronary arteries which are the three main vessels that supply oxygen rich blood into our hear muscles. After that, the flow of blood is recorded through a special x-ray technique. The final outcome is a video which shows the flow of blood in coronary arteries. It clearly shows the thickness of flow and it gives a clear idea of which blood vessels got narrowed thickness. Those areas should be treated immediately. Interesting thing is that my uncle even doesn’t know that a catheter was inserted into his body. It is 100% pain less and takes a very short time. He says it was like a simple injection.

Following video shows an example of the output an angiogram.

According to my uncle’s angiogram, he has got a bit long narrowing in one of his three coronary arteries. Doctor’s recommendation is to do a stent treatment. In that also, a catheter is inserted in the same way and the blocked area is cleared using a technique called angioplasty and a metal mesh is kept there to save the artery from blocking again. It gives almost the same result as an open heart bypass surgery with minimum pain and effort. That’s why I was amazed with these new technologies. So we are going to do this treatment for my uncle next week.

The videos given at provides a perfect idea of angiograms and stenting. You will find it extremely interesting.

Hackathons at WSO2

These days almost all of our WSO2 folks are working extremely hard to release our first group of products on WSO2 Carbon platform. January 12th is the scheduled date to release WSO2 WSAS 3.0, WSO2 ESB 2.0, WSO2 Registry 1.0 and WSO2 BPS 1.0. Beta releases of all these products are already released and available to download. Out of those betas, WSAS and BPS are really stable and in good shape to be released on 12th. By the start of this week, there were some areas of ESB and Registry still to be improved.

In order to achieve a rapid progress in ESB and Registry, two Hackathons were organized. Normally we work separately and everyone completes his/her own work. But in a hackathon, a set of developers and testers sit around a single table and try to tackle issues as much as possible in a short period of time. By now I’ve participated in 3 or 4 hackathons at WSO2. Through that experience, I understand that it is an extremely effective method of development specially for bug fixing. I can remember that we could dramatically improve the quality of Data Services 1.0 release through a one week hackathon. During last two days, I participated in the ESB hackathon and I’m in Registry hackathon today and tomorrow.

I think the secret behind the success of hackathons is that everyone can interact with all responsible parties of the product at a single place. It helps to take quick decisions and have influence of others. As the testers immediately test the fixed bugs, feedback is also extremely fast. There’s one more important thing which is followed here at WSO2. At the hackathon, each developer is assigned a set of bugs on components which are developed by some other developer (this is followed mostly for UI issues). This improves the quality of the UI as it is improved through different view points of different developers.

How to use HTML radio buttons with proper alignments

If you want to provide a set of radio buttons with some text infront of each button in an HTML page, you have to use a table to do that. Basic code is shown below.

<td><input id=”foo” type=”radio” value=”none”/>Selection1</td>
<td><input id=”bar” type=”radio” value=”none”/>Selection2</td>

But the output of the above code won’t be properly aligned. If you want to make it properly aligned, you have to use a separate ‘td’ for your text. And also, you have to set the vertical alignment of your text to middle. Proper code is given below.

<td><input id=”foo” type=”radio” value=”none”/></td>
<td style=”vertical-align:middle;”>Selection1</td>
<td><input id=”bar” type=”radio” value=”none”/></td>
<td style=”vertical-align:middle;”>Selection2</td>

End of Australia’s domination of the Cricket pitch

Australia has been dominating the Cricket pitch for almost 10 year since their world cup win in 1999. During this time period they clearly stood up and maintained a considerable gab between them and the team ranked 2nd in both Test and One day Cricket. When one team is this far ahead of the others it reduces the competitiveness and results become obvious. This is not good for the game and also for the spectators. Anyway I’m not blaming Australia for standing up and it was up to other teams to come up put on a fight against them. I was waiting for that to happen as a cricket lover.

Now I think the time has come. Best evident for that is Australia has already lost the Test series against South Africa 2-0 with one match to come. This is the first Australian Test series loss on their own soil after 15 years. Retirement of Shane Warne and Glenn McGrath has badly reduced the quality of their bowling attack. In addition to that dangerous Adam Gilchrist also got retired very recently. I think they won’t be able to find such a great wicket keeper batsman for a long time. Captain Ricky Ponting and Matthew Hayden also are at the end of their careers. I don’t see any new batsman with a good technique and talent coming into Australian team after Michael Clarke. On the other hand, who can replace Warne and McGrath? So these are the clear reasons for their collapse.

If you are a cricket lover, you will certainly know how West Indies dominated the cricket world for almost 2 decades in 1960’s and 70’s. They did wonders. But after their world cup final loss against India in 1983, their form gradually deteriorated. It could’ve been the same story for Aussies if they lost the 2007 world cup final against Sri Lanka repeating what happened in 1996.


But Gilchrist with a Squash ball in his glove (which is not allowed under Cricket rules), dashed 150 odd runs and they won the game under some bad umpiring and bad weather. Most Cricket experts all over the world criticized umpires’ decisions when the light went low when the Sri Lankans were batting.

Anyhow I think now it’s the end of summer for Aussies. They lost to India in India recently and If they’ll come to Sri Lanka now, Murali and Ajantha will squeeze their batsmen. Now there are about 4, 5 teams who can beat Aussies for sure. This is great for Cricket and also for us as spectators.


So it’s time to go Aussies, Ponting!…

Useful Equinox OSGi commands

Equinox is an implementation of the OSGi R4 core framework specification. This is the OSGi implementation which is used in WSO2 Carbon framework as well. Following commands are extremely useful in troubleshooting OSGi related issues.

ss (Ex: osgi> ss)
This command can be used to list all the existing bundles in the OSGi environment. Bundle ID, State and Bundle symbolic name of all the bundles are shown.

start <bundle-id> (Ex: osgi> start 16)
This command can be used to start a particular bundle. If it can’t be started, reasons are printed on the console.

stop <bundle-id> (Ex: osgi> stop 16)
This command can be used to stop a particular bundle. If it can’t be stopped, reasons are printed on the console.

b <bundle-id> (Ex: osgi> b 16)
This can be used to print all the meta data related to this bundle. That includes imported packages, exported packages, host bundle, required bundles etc.

diag <bundle-id> (Ex: osgi> diag 16)
This can be used to diagnose a particular bundle. It will show you the list of missing imported packages.

headers <bundle-id> (Ex: osgi> headers 16)
This can be used to list the headers for a particular bundle.

packages <package-name> (Ex: osgi> packages
This can be used to list all the bundles which use the given package.

install file:<file-path> (Ex: osgi> install file:/home/temp/bundle1.jar)
This can be used to install a bundle into running OSGi environment. After installing, use ‘start’ command to activate the bundle.

uninstall <bundle-id> (Ex: osgi> uninstall 16)
This can be used to remove a bundle from the OSGi environment.

active (Ex: osgi> active)
This can be used to list all active bundles in the current instance.

refresh (Ex: osgi> refresh)
This can be used to refresh the system. All the package resolutions are refreshed when this is executed. Always refresh the system after uninstalling a bundle as a best practice.

Note : <bundle-symbolic-name> also can be used instead of <bundle-id> in above commands which uses <bundle-id> as a parameter.