<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-672917329034807317</id><updated>2012-02-11T09:09:48.567+11:00</updated><category term='mobile'/><category term='bpel'/><category term='iTV'/><category term='spring integration'/><category term='rdbms'/><category term='firefox'/><category term='PKIX path building failed'/><category term='spring'/><category term='web service'/><category term='nosql'/><category term='windows mobile'/><category term='Service Delivery Platform'/><category term='story'/><category term='acegi'/><category term='Telco'/><category term='scala'/><category term='java'/><category term='I am Legend'/><category term='security'/><category term='spring security'/><category term='cloud'/><category term='SSO'/><category term='ftpclient'/><category term='CAS'/><category term='mvc'/><category term='observer'/><category term='movie'/><category term='iPhone'/><category term='VAS'/><category term='short story'/><category term='JMX'/><category term='Soltura'/><category term='dsl'/><category term='ssl'/><category term='Lunch Time Post'/><category term='framework'/><category term='j2ee'/><category term='web os'/><category term='hsenid'/><category term='MappedByteBuffer'/><category term='svn'/><category term='google'/><category term='OS'/><category term='bugzilla'/><category term='AOP'/><category term='nio'/><category term='javascript'/><category term='ESB'/><category term='CheckStyle'/><category term='J2EE pattern'/><category term='mobicents'/><category term='jira'/><category term='fedora'/><category term='SOA'/><category term='Vishma'/><category term='LOGBack'/><category term='green IT'/><category term='deployments'/><category term='design pattern'/><category term='GSMA'/><category term='agile'/><category term='ivy'/><category term='opensource'/><category term='FIFO'/><category term='EIP'/><category term='antlr'/><category term='svnchecker'/><category term='code style'/><category term='SLF4J'/><category term='JSON'/><category term='Android'/><category term='code review'/><category term='apache'/><category term='linux'/><category term='commons-logging'/><category term='REST'/><category term='process'/><category term='domain driven design'/><category term='oop'/><category term='contemporary'/><category term='mongodb'/><category term='spring webflow'/><category term='google chrome'/><category term='log4j'/><category term='jquery'/><category term='Sun'/><category term='refcardz'/><category term='blackberry'/><category term='Value Added Services'/><category term='xplanner'/><category term='functional programming'/><category term='ja-sig'/><category term='microsoft'/><category term='apache CXF'/><category term='SDP'/><category term='webindows'/><category term='Samsung'/><category term='mchoice'/><category term='opensolaris'/><category term='iPad'/><category term='RAD'/><title type='text'>Stay Tuned with JK !</title><subtitle type='html'>JK's Pandora Box ... Dumpster dive at your own risk!!!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.iamjk.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default?start-index=101&amp;max-results=100'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>102</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-3593824235850959120</id><published>2012-02-09T13:31:00.001+11:00</published><updated>2012-02-09T13:31:33.406+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='Lunch Time Post'/><category scheme='http://www.blogger.com/atom/ns#' term='iTV'/><title type='text'>Lunch Time Post : News of Apple's iTV</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;1.20 PM&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Today much anticipating iTV's details leaked out. Sources from Canadian telecom operators leaked out, if are to believed, then the iTV would become truly magical, a revolutionary product to-date ever since the transformation from the black and white to Color TV in 70s (Was it 70s?).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The idea is simple. iTV is gonna be the 42inch iPad + Siri + Kinect like product.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It would have a front end camera just like how Kinect would look like, with voice and gestures, one could operate the TV, which also comes up with onscreen keyboard like iPad and yes with app store.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;At home, I am using smart-hub Samsung TV only for its YouTube support, but the user experience is crappy and doesn't bring anything exciting other than its usual calendar, calculator like applications. Who the hell would want a calculator in a Television? only samsung knows! These are all old 1984 Macintosh era applications, poor still guys betting on such tricks.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Hope Apple would bring something new, I seriously don't want anything on my lap now( I mean the electronic gadget), and looking forward to type something on the air to publish my first blog via iTV, sitting on couch!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;http://www.zdnet.com/blog/home-theater/latest-apple-itv-rumors-siri-and-motion-controls-built-in-best-buy-polls-consumers-on-price/5625&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1.30 PM&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-3593824235850959120?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/3593824235850959120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2012/02/lunch-time-post-news-of-apples-itv.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3593824235850959120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3593824235850959120'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2012/02/lunch-time-post-news-of-apples-itv.html' title='Lunch Time Post : News of Apple&apos;s iTV'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-9042697597647083751</id><published>2012-02-08T13:59:00.000+11:00</published><updated>2012-02-08T13:59:15.761+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Lunch Time Post'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><title type='text'>Lunch Time Post : focus!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Time 1:45&amp;nbsp; PM&lt;br /&gt;&lt;br /&gt;Today morning, I was hit with an irritating UI issue. I was working on a JSP with combinations of div elements with rich use of jquery. Upon different combinations we may need to show and hind the div elements accordingly. There goes a problem enabling the focus on the logical input element.&lt;br /&gt;&lt;br /&gt;So I was reusing a simple window.onload function (You can use the jquery ready function too, but I had my reasons not to!)&lt;br /&gt;&lt;br /&gt;window.onload = function()&lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set focus on first field but skip disabled ones&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var i = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (document.now_step.elements[i].type == 'hidden'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; || document.now_step.elements[i].disabled)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; now_step.elements[i].focus();&lt;br /&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;There is nothing wrong with the code, but this doesn't inherit the visible value from the display css style attribute. So the fields inside the hidden display div would survive the while loop and cause a JS error when calling focus function.&lt;br /&gt;&lt;br /&gt;Was doing a search, and my colleague advised me to have a look on jquery visible API, and that done the trick just right.&lt;br /&gt; &lt;br /&gt;window.onload = function()&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set focus on first field but skip disabled ones&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var i = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (&lt;b&gt;!$(document.now_step.elements[i]).is(':visible')&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; || document.now_step.elements[i].disabled)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; now_step.elements[i].focus();&lt;br /&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;Description :&lt;br /&gt;Elements can be considered hidden for several reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;They have a CSS &lt;code&gt;display&lt;/code&gt; value of &lt;code&gt;none&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;They are form elements with &lt;code&gt;type="hidden"&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Their width and height are explicitly set to 0.&lt;/li&gt;&lt;li&gt;An ancestor element is hidden, so the element is not shown on the page.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://api.jquery.com/visible-selector/" target="_blank"&gt;http://api.jquery.com/visible-&lt;wbr&gt;&lt;/wbr&gt;selector/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nice to see JQuery taking care of this kind annoyances and its amazing how it manages browser compatibility almost seamlessly.&lt;br /&gt;&lt;br /&gt;Time 2:00&amp;nbsp; PM &lt;br /&gt; &lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-9042697597647083751?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/9042697597647083751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2012/02/lunch-time-post-focus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/9042697597647083751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/9042697597647083751'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2012/02/lunch-time-post-focus.html' title='Lunch Time Post : focus!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-2482476148291713668</id><published>2012-02-07T15:26:00.001+11:00</published><updated>2012-02-07T15:26:22.414+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Samsung'/><category scheme='http://www.blogger.com/atom/ns#' term='Lunch Time Post'/><title type='text'>Lunch Time Post : Samsung Ace ... Sunk!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;12: 25 PM&lt;/div&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Using Samsung Galaxy Ace, recently bought from Singapore. I had been an iPhone user and moving to Galaxy is like moving from palace to townhouse! Listing few of hundred issues I have seen compared to iPhone (was using 3GS by then)...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1) Terrible touch sensor! One could go for a nap before the sensor actually works. It tries to be smarter and deactivates the sensor when we bring it closer to the ears. But the shitty thing&amp;nbsp; is when we are done with the call, it would still be deactivated few more seconds and we could go for another nap&amp;nbsp; by then!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2) Ridiculous playlist management. I added about thousand+ songs with about 10 playlists. None of the playlists were synced although the songs were copied to the device. Now I am relying on the albums to play, such a pain.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3) Adding more to the wound, when you try scrolling the songs, it sucks, the sensor gets stuck and rapid panic starts to happen. events jumping across, even some of the applications started from nowhere, once it even sent a text message to my friend unexpectedly. A nightmare of its own!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4) GPS is much better, but then the usual touch sensor issue caused me touching the different destination unaware of, once I went to Julia Gillard's home when she was ...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;5) I don't know why, I couldn't view the indic fonts in the browser, Tamil my language is. I tried to install another browser named SETT.&amp;nbsp; Perfect app for Samsaung. Terrible as it is!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So why did I go for it? fate ... nothing but fate!!! One of my friends suggested and obviously it is 300bucks cheaper than iPhone .. cheap it is!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;12:33 PM&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-2482476148291713668?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/2482476148291713668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2012/02/lunch-time-post-samsung-ace-sunk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2482476148291713668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2482476148291713668'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2012/02/lunch-time-post-samsung-ace-sunk.html' title='Lunch Time Post : Samsung Ace ... Sunk!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-8555390155278307492</id><published>2012-02-06T12:35:00.002+11:00</published><updated>2012-02-06T12:35:54.391+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jira'/><category scheme='http://www.blogger.com/atom/ns#' term='bugzilla'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='xplanner'/><category scheme='http://www.blogger.com/atom/ns#' term='Lunch Time Post'/><title type='text'>Lunch Time Post : Jira!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Time : 12:25 PM&lt;br /&gt;&lt;br /&gt;Few years back, in one of our company meetings, we talked about using an issue tracking system closely associated with both project management and the development. By then we were using bugzilla together with xplanner. It turned out to be pretty inefficient . We used bugzilla for post release issues and sustaining management. Dodgy xplanner was only used by the beginners. Seniors took it as granted not to update it, I am one of those sinners ofcourse!&lt;br /&gt;&lt;br /&gt;I remember I suggested using Jira, the idea appreciated but turned down for its pricing! Life still went on without jira .. and with messy bugzilla and xplanner. We were agile after all!!!&lt;br /&gt;&lt;br /&gt;Now different life, and of course Australians not reluctant to use commercial utilities software, fortunately I now have the opportunity to use Jira, more than an issue tracking system, I thought it was, good one!&lt;br /&gt;&lt;br /&gt;These are some of the features I like about Jira.&lt;br /&gt;&lt;br /&gt;1) Manage your task lists synced with Project plan. Tech leads can find it easy to manage the tasks for developers.&lt;br /&gt;&lt;br /&gt;2) Time management is more efficient. You can update your time spent on a task easily in Jira. Knowing how messy the xplanner is and its performance, Jira is far far better.&lt;br /&gt;&lt;br /&gt;3) Jira tickets can easily be integrated with code commits. For example if you are working on a ticket OSC-1111 then you just have to commit your code with [OSC-1111] in your header, you will see the commit message on Jira ticket. Easy for code review, version management .. you name it.&lt;br /&gt;&lt;br /&gt;4) Project management utilities. Good project manager can live with only Jira. You can track the project timeline, resource management and current status nicely.&lt;br /&gt;&lt;br /&gt;5) What I most like is its user interface. Creating, updating a jira ticket is so comprehensive. Usually the number of inputs or clicks required for performing a Jira ticket is far lesser than xplanner and obviously bugzilla.&lt;br /&gt;&lt;br /&gt;Hope to write more on Jira in another lunch time blogging. Its time to go!&lt;br /&gt;&lt;br /&gt;http://www.atlassian.com/software/jira/overview &lt;br /&gt;&lt;br /&gt;Time : 12.35PM&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-8555390155278307492?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/8555390155278307492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2012/02/lunch-time-post-jira.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/8555390155278307492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/8555390155278307492'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2012/02/lunch-time-post-jira.html' title='Lunch Time Post : Jira!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-3973345578306424506</id><published>2012-02-03T13:45:00.002+11:00</published><updated>2012-02-06T12:36:13.124+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lunch Time Post'/><title type='text'>Distance between a Problem and a Solution</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Yesterday I got myself into a trouble solving a tricky problem. &lt;br /&gt;&lt;br /&gt;I was working on a Form of fields, populated from DB for letting the user to edit. the tables are legacy, 12 years old, you don't see timestamps etc etc! Not a modern day design you could find yourself easy solving it!&lt;br /&gt;&lt;br /&gt;The problem was, I need to find out whether are there any updates on those fields, based on that the next sequence would carry on. I tried many ways, trial and error on a legacy system which you are not well aware of, is like marrying a girl you never met before! its unimaginable, sometimes your solution might just work .. sometimes it would lead to kolai veri!&lt;br /&gt;&lt;br /&gt;So I had a chat with the subject expert .. it turned out to be a solution which I would have hardly gone for if I hadn't had the chat. When populating, just create a checksum for the populated values and hold it somewhere(session/db . name it). After a form submission, again create the checksum and compare ... Its simple when you find it! but damn complex when you search for!!&lt;br /&gt;&lt;br /&gt;Its amazing how the concept of checksum concept applicable all the way from inventories, electronic signals,&amp;nbsp; UDPs, storage systems and app level BL codes... &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-3973345578306424506?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/3973345578306424506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2012/02/distance-between-problem-and-solution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3973345578306424506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3973345578306424506'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2012/02/distance-between-problem-and-solution.html' title='Distance between a Problem and a Solution'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-630808798543660843</id><published>2012-02-02T14:52:00.000+11:00</published><updated>2012-02-06T12:36:26.744+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lunch Time Post'/><title type='text'>Story! ... Story of a Story! ... Stories that varies! Of that Story ... Story!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Totally forgot I had a resolution to write during the lunch hours. Today, damn Ketha asked me for lunch. We had a bit of a catchup to do, so we met in Melbourne Convention Center ..&lt;br /&gt;&lt;br /&gt;He discussed about my unpublished story(in Tamil) written recently, I had asked opinion from him and Uthaya since I felt something odd in this story. Nothing looked odd to Ketha. But Uthaya pointed out couple of things. I am not too religious with my stories. Willing to compromise for the reader and also if somebody suggests an improvement, yes I will change. End of the day it all lead to a good story.. that's it.&lt;br /&gt;&lt;br /&gt;Ketha even talked about the possible short film from the story. Didn't realise it until he suggested it. Now I realise, its a story for a good short film, guess I should write it in English soon!&lt;br /&gt;&lt;br /&gt;There could be a radio program I would be doing with Ketha soon. We talked about it. Lot of things piled up, not sure how am I gonna cope up with these. Already my sleeping hours limited to five! &lt;br /&gt;&lt;br /&gt;Oh yeah, cannot write anymore, lunch time is over! See you tomorrow.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-630808798543660843?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/630808798543660843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2012/02/story-story-of-story-stories-that.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/630808798543660843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/630808798543660843'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2012/02/story-story-of-story-stories-that.html' title='Story! ... Story of a Story! ... Stories that varies! Of that Story ... Story!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-6203775789631561949</id><published>2012-02-01T13:21:00.003+11:00</published><updated>2012-02-06T12:36:41.342+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lunch Time Post'/><title type='text'>Corporate Rubbish and Unreasonable Amount Of Fun!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Yesterday Gosling &lt;a href="http://nighthacks.com/roller/jag/entry/having_an_unreasonable_amount_of1"&gt;blogged &lt;/a&gt;about having an unreasonable amount of fun at writing a pub/sub cloud repo with using &lt;a href="http://worldwindcentral.com/wiki/Main_page"&gt;worldwind&lt;/a&gt; library. He went on to mention about being away from meeting and corporate rubbish! How amazing a man of his level could manage to do this! Steve Wozniak Version II.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;No way comparing his situation or skill level with mine , but I could relate something, last few years I was working with client, on client side doing most of my times. Not that all were business related, mostly they were technical, design and prototyping work which I don't regret. But I had this headache of talking to a client, preparing for the meetings, at some level preparing the bluffs and stories. Never had a single day I had the fun of coding something throughout the day with music on without being worried about all those corporate rubbish. Something I was complaining throughout to my supervisor. With all other circumstances, I pulled the wire last July. Time to move on.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now, again circumstances lead me to this position again. I would be lying if I say I wanted this job badly though. I took what was on my way, but fortunately it turned out to be the job I most enjoy. Code code code and code.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Today I came early in the morning, tried to solve a problem which was itching last night. I couldn't finish it yesterday evening, I wanted to spend more time, but finally decided to leave abruptly, by experience I knew I can solve it in the morning. Within 30 minutes in the morning, I fixed the problem, even before the standup!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;When we had a peer code review, I explained him the problem and also outlined the solutions I tried and the flaws in them (There were three, I had codes backed up for all three). We started to enjoy the discussion and he even suggested a better solution! I then improvised and came up with even better. Jeez this is exactly I want ...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Hey God, wish you exist to thank you once again!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-6203775789631561949?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/6203775789631561949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2012/02/corporate-rubbish-and-unreasonable.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6203775789631561949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6203775789631561949'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2012/02/corporate-rubbish-and-unreasonable.html' title='Corporate Rubbish and Unreasonable Amount Of Fun!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-4672301863190261929</id><published>2012-01-31T13:43:00.002+11:00</published><updated>2012-02-06T12:36:54.296+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lunch Time Post'/><title type='text'>ySchool : A School Management System</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I have a Chinese new year resolution, getting back to blogging. Well this is gonna be a lunch time blogging. Will be short and slim! Lets get on to the topic!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sayys365.blogspot.com.au/2012/01/yarl-it-hub-school-management-system.html"&gt;ySchool&lt;/a&gt;, an open source school management system, we at &lt;a href="http://yarlithub.org/"&gt;Yarl IT Hub&lt;/a&gt; are trying to build. The idea is simple. We want to build a system for primary and secondary schools with features all the way from student management, enrollment, subjects and grading, you name it! &lt;br /&gt;&lt;br /&gt;Its not that there aren't any system on this category built yet. But most of the systems are barely re-usable. The issue with these systems are, they are usually built for a particular school first and then made opensource. Understandably they suck when we try to accommodate to another academic entity.&lt;br /&gt;&lt;br /&gt;Now that we have a team and some research fellows joining, we want to build a system which we should be able to reuse with every other secondary/rural school with minimum effort, easier said than done. That's the business of our research fellows and they are doing it.&lt;br /&gt;&lt;br /&gt;Why am I writing this now? Today I was reading a google post on their education system.&lt;br /&gt;http://www.google.com/apps/intl/en/edu/k12.html&lt;br /&gt;&lt;br /&gt;The case study looks promising, something along the line with what we trying to achieve in countries like India, Sri Lanka, Bangladesh.&amp;nbsp; Fundamentally a school management system is a SAAS model. Where services can be modeled to a particular school management system. Universities in Australia have done that with huge Enterprise level SOA migration recently. If we could replicate a light weight version of this to suit for school like "Vaddakachchi Maha Viththiyaalayam, Kilinochchi" or "St.John's College Jaffna", that would be quite a story on its own!&lt;br /&gt;&lt;br /&gt;As a matter of fact,&amp;nbsp; "Vaddakachchi Maha Viththiyaalayam, Kilinochchi" was the I school I sat my O/L exam in 1996. That was the time our family displaced to Kilinochchi during the war. "St.John's College Jaffna" is where I studied from age of ten to nineteen! Hmmm&lt;br /&gt;&lt;br /&gt;Lunch time over .. See you tomorrow!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-4672301863190261929?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/4672301863190261929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2012/01/yschool-school-management-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/4672301863190261929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/4672301863190261929'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2012/01/yschool-school-management-system.html' title='ySchool : A School Management System'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-6589062355719497603</id><published>2011-11-09T16:45:00.003+11:00</published><updated>2011-11-09T16:45:57.998+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web service'/><title type='text'>Never Name Your Kid "Parameters"!!!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I hardly bucked up by any Microsoft&amp;nbsp; issues usually, but last Friday, one MS bug hit me in a typical fashion.&lt;br /&gt;&lt;br /&gt;It all started with me writing a doc literal web service. I designed the WSDL with eclipse WSDL editor with&amp;nbsp; a clean schema of objects using inheritance in lots of element types, in order to reuse the standard headers there, never created any anonymous types, all went cool with jaxws, even tested with SOAP UI ..So far so good.&lt;br /&gt;&lt;br /&gt;Then we released the service and a .NET thirdparty tried to use this service, the VS developer called me and said he couldn't even generate the stubs both in VS as well as in a crap tool called WCFStorm. I tested my WSDL with Liquid XML, XML Studio and SOAP UI, all looked fine, but this Microsoft powered WCFStorm would only give trouble. I got another colleague to test it in VS, unsurprisingly it didn't work there.&lt;br /&gt;&lt;br /&gt;I tried all my weapons in the schema definitions, made it in line, made it simpler ... you name it .. Nothing worked...&amp;nbsp; Finally we found the reason, the reason which could be the silliest ever it could be, the name of the "part" element was "parameters" ... yes just "parameters" .. if it was "params", "billgates" or ballmer" it would have still worked&amp;nbsp; .. why?&lt;br /&gt;&lt;br /&gt;.NET acted smart it thought. For a doc/literal/wrapped service, it generates a proxy with ignoring the wrapper part so that an unnecessary wrapper could be avoided in the generated code. The logic sounds good to me. But then when the part name is "parameters" it assumes its a wrapped service even when its not.&amp;nbsp; so changing the partname to "ballmer" instead of "parameters" just worked..&lt;br /&gt;&lt;br /&gt;No wonder why job concerned about offerring a glass of icewater to a person in hell!!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference : http://webservices20.blogspot.com/2010/01/interoperability-gotcha-these-members.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-6589062355719497603?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/6589062355719497603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/11/never-name-your-kid-parameters.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6589062355719497603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6589062355719497603'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/11/never-name-your-kid-parameters.html' title='Never Name Your Kid &quot;Parameters&quot;!!!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-114015730303844867</id><published>2011-08-07T09:55:00.001+10:00</published><updated>2011-08-07T09:55:36.111+10:00</updated><title type='text'>Metawidget!</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Recently, I had a chance to talk to &lt;a href="http://blog.kennardconsulting.com/search/label/Metawidget" target="_blank"&gt;Mr Richard Kannard&lt;/a&gt;, founder of &lt;a href="http://metawidget.org/" target="_blank"&gt;metawidget&lt;/a&gt; tool. &lt;a href="http://metawidget.org/" target="_blank"&gt;Metawidget&lt;/a&gt; is a simple inspection tool which takes the metadata(primarily annotations based, but xml metadata supported too) of your domain objects and create UI components from it.&amp;nbsp; This is something similar to &lt;a href="http://www.cascadetg.com/software/beanview" target="_blank"&gt;Beanview&lt;/a&gt;, but metawidget comes up with a support of existing standard APIs’ annotations in addition to its own set of annotations. &lt;/p&gt; &lt;p&gt;So I given it a try, developed a simple web application using JSF2 and metawidget. I chose JSF2 to starts with, since it has a nice support with POJOs being exposed as the UI components via annotations and even for an extent you can use POJO’s business methods as the controller methods.&lt;/p&gt; &lt;p&gt;Documentation is neat, tight and clean and one doesn’t need a blog to explain what Metawidget is! So I keep this blog post short and leave my Google code to talk more!&lt;/p&gt; &lt;p&gt;&lt;a href="http://code.google.com/p/myjobs/" target="_blank"&gt;MyJobs&lt;/a&gt; is the project, now being refactored to add other frameworks too. More details, you should find it in the project website.&lt;/p&gt; &lt;p&gt;&lt;a href="http://code.google.com/p/myjobs/"&gt;http://code.google.com/p/myjobs/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-114015730303844867?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/114015730303844867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/08/metawidget.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/114015730303844867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/114015730303844867'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/08/metawidget.html' title='Metawidget!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-9036357601859449722</id><published>2011-07-19T17:39:00.001+10:00</published><updated>2011-07-19T17:52:32.654+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='domain driven design'/><title type='text'>Double Dispatch Pattern</title><content type='html'>&lt;div style="text-align: justify;"&gt;Few years back, during one of our code reviews, my supervisor&amp;nbsp;advised&amp;nbsp;me to refer Double Dispatch pattern for some of the code segments I have written. It took a bit of time for me to understand the ideas behind the double dispatch model, once realised, I became a kind of advocate to this model!&lt;/div&gt;&lt;br /&gt;Now lets look at an example which is written without double dispatch pattern. An &lt;em&gt;Authentication &lt;/em&gt;class which knows authentication logics like &lt;em&gt;sslAuth&lt;/em&gt;, &lt;em&gt;simpleAuth&lt;/em&gt; and &lt;em&gt;noAuth,&lt;/em&gt;&amp;nbsp;&lt;em&gt;authenticate&lt;/em&gt;s &lt;em&gt;Request&lt;/em&gt;s. (Discard the logic here, the code written solely to demonstrate the double dispatcher!)&lt;br /&gt;&lt;div id="codeSnippetWrapper" style="background-color: #f4f4f4; border-bottom: silver 1px solid; border-left: silver 1px solid; border-right: silver 1px solid; border-top: silver 1px solid; cursor: text; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 20px 0px 10px; max-height: 200px; overflow: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 97.5%;"&gt;&lt;div id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; Authentication {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;      &lt;span style="color: blue;"&gt;public&lt;/span&gt; boolean authenticate(Request request){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;         &lt;span style="color: blue;"&gt;if&lt;/span&gt;(request instanceof SecureRequest){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;             &lt;span style="color: blue;"&gt;return&lt;/span&gt; simpleAuth();&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;         }&lt;span style="color: blue;"&gt;else&lt;/span&gt; &lt;span style="color: blue;"&gt;if&lt;/span&gt;(request instanceof HighlySecuredRequest){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;             &lt;span style="color: blue;"&gt;return&lt;/span&gt; sslAuth();&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         }&lt;span style="color: blue;"&gt;else&lt;/span&gt; &lt;span style="color: blue;"&gt;if&lt;/span&gt;(request instanceof DumbRequest) {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;              &lt;span style="color: blue;"&gt;return&lt;/span&gt; noAuth();&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         }&lt;span style="color: blue;"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;             &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; RuntimeException(&lt;span style="color: #006080;"&gt;"No authentication supported"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; boolean simpleAuth(){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         System.&lt;span style="color: blue;"&gt;out&lt;/span&gt;.println(&lt;span style="color: #006080;"&gt;"This is the Simple auth Logic Ha Ha!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; boolean sslAuth(){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;         System.&lt;span style="color: blue;"&gt;out&lt;/span&gt;.println(&lt;span style="color: #006080;"&gt;"SSL ha ha, just for double dispatch example!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;         &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; boolean noAuth(){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;         System.&lt;span style="color: blue;"&gt;out&lt;/span&gt;.println(&lt;span style="color: #006080;"&gt;"No authentication, just checking the username!!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;         &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The &lt;em&gt;authentication&lt;/em&gt; method decides which authentication mechanism to be used for every request. Though it sounds perfectly alright, it violates the OOP ideologies.Why?&lt;/div&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;1) Responsibility Principle&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;A class or method should be responsible for the behaviour of it. Its behaviour shouldn’t be held by some other class! Here &lt;em&gt;Authentication&lt;/em&gt; class decides what should &lt;em&gt;Request&lt;/em&gt; class use for its authentication. The responsibility of the &lt;em&gt;Request&lt;/em&gt; class is taken over by &lt;em&gt;Authentication &lt;/em&gt;class!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2) Extendibility&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Let’s assume, you introduce a new &lt;i&gt;Request&lt;/i&gt; type called &lt;em&gt;TwoWaySSLRequest&lt;/em&gt;. Then you need to add this type check inside the &lt;em&gt;Authentication&lt;/em&gt; class. Thumbs down!&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;2) Performance&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;When you have too many &lt;i&gt;if conditions&lt;/i&gt; with type checking, you unnecessarily impact the performance of the code. Look at the &lt;em&gt;authenticate&lt;/em&gt; method. It has one too many &lt;i&gt;if conditions&lt;/i&gt; and it will result varied performance problems depending on the type of &lt;em&gt;Request&lt;/em&gt; object we receive!&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;So what does DoubleDispatch pattern suggest?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;em&gt;&lt;b&gt;double dispatch&lt;/b&gt; is a special form of &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Multiple_dispatch"&gt;&lt;em&gt;multiple dispatch&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, and a mechanism that dispatches a function call to different concrete functions depending on the runtime types of two objects involved in the call! –&amp;nbsp;&lt;/em&gt;&lt;i&gt;Wikipedia&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In simple terms, the idea here is, I know what I can do and what you can do. So I will do my part and when required I will ask you to do your part and vice versa! (When we extend this to upper level, it becomes IOC too!!)&lt;/div&gt;&lt;br /&gt;So lets try to refactor this code using double dispatch pattern!&lt;br /&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper" style="background-color: #f4f4f4; border-bottom: silver 1px solid; border-left: silver 1px solid; border-right: silver 1px solid; border-top: silver 1px solid; cursor: text; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; height: 260px; line-height: 12pt; margin: 20px 0px 10px; max-height: 1000px; overflow: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 97.5%;"&gt;&lt;br /&gt;&lt;div id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; Authentication {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; boolean authenticate(Request request){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;         &lt;span style="color: blue;"&gt;return&lt;/span&gt; application.authenticate(&lt;span style="color: blue;"&gt;this&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; boolean simpleAuth(){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         System.&lt;span style="color: blue;"&gt;out&lt;/span&gt;.println(&lt;span style="color: #006080;"&gt;"This is the Simple auth logic Ha Ha!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; boolean sslAuth(){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;         System.&lt;span style="color: blue;"&gt;out&lt;/span&gt;.println(&lt;span style="color: #006080;"&gt;"Bit complex logic!!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;         &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; boolean noAuth(){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         System.&lt;span style="color: blue;"&gt;out&lt;/span&gt;.println(&lt;span style="color: #006080;"&gt;"No auth, just checking the username!!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;interface&lt;/span&gt; Request {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;     boolean authenticate(Authentication authentication);&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; SecureRequest implements Request {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; boolean authenticate(Authentication authentication){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;         &lt;span style="color: blue;"&gt;return&lt;/span&gt; authentication.simpleAuth();&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; HighlySecuredRequest implements Request {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; boolean authenticate(Authentication authentication){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt;         &lt;span style="color: blue;"&gt;return&lt;/span&gt; authentication.sslAuth();&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt;  36:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt;  37:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt;  38:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum39" style="color: #606060;"&gt;  39:&lt;/span&gt; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; SecureRequest implements Request {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum40" style="color: #606060;"&gt;  40:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum41" style="color: #606060;"&gt;  41:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; boolean authenticate(Authentication authentication){&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum42" style="color: #606060;"&gt;  42:&lt;/span&gt;         &lt;span style="color: blue;"&gt;return&lt;/span&gt; authentication.simpleAuth();&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum43" style="color: #606060;"&gt;  43:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum44" style="color: #606060;"&gt;  44:&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;1) Now its the &lt;em&gt;Request&lt;/em&gt; object decides which is its authentication mechanism going to be. So the responsibility is passed to the right class.&amp;nbsp; &lt;em&gt;Authentication&lt;/em&gt; object dispatches to &lt;em&gt;Request&lt;/em&gt; object and then &lt;em&gt;Request&lt;/em&gt; object dispatches back to &lt;em&gt;Authentication&lt;/em&gt;&amp;nbsp;object to&amp;nbsp;fulfil&amp;nbsp;the &lt;em&gt;authenticate&lt;/em&gt; operation! – Hence DoubleDispatch name!!!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2) Now introducing a new &lt;em&gt;Request &lt;/em&gt;class type can be done effortlessly. You don’t need to touch the &lt;em&gt;Authentication&lt;/em&gt; object in order to introduce a new &lt;em&gt;Request &lt;/em&gt;type. Hence the code is extendable!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3) This will eliminate the unnecessary if conditions too! Hence performance is much better!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The call flow is simple and one way, it doesn’t have unnecessary conditional checking nor any type checking.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I think this has some shadows of the Visitor pattern and there could be people doing this without realising the name of the pattern. And the argument gets diluted when you write code in functional programming way. Anyway its always important to know a pattern, so you can decide over it!!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-9036357601859449722?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/9036357601859449722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/07/double-dispatch-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/9036357601859449722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/9036357601859449722'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/07/double-dispatch-pattern.html' title='Double Dispatch Pattern'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-1622699528141902089</id><published>2011-07-16T11:28:00.001+10:00</published><updated>2011-07-16T11:30:00.125+10:00</updated><title type='text'>Oh My God!</title><content type='html'>I got an email yesterday!&lt;br /&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Subject : Hello SIR&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;SIR,&lt;br /&gt;Good Morning,&lt;br /&gt;I am XXX from India,I am a M.C.A &lt;br /&gt;Graduate....Working &lt;span style="color: blue;"&gt;as&lt;/span&gt; a software trainer.....specially &lt;span style="color: blue;"&gt;in&lt;/span&gt; java&lt;br /&gt;I had seen your resume &lt;span style="color: blue;"&gt;in&lt;/span&gt; Internet....&lt;br /&gt;Really amazing..highly impressed with ur resume....&lt;br /&gt;U have learned lot more technologies....its really nice......&lt;br /&gt;I am also interested to &lt;span style="color: blue;"&gt;do&lt;/span&gt; java certification.....&lt;br /&gt;If possible please guide and help me sir....&lt;br /&gt;Thanks&lt;br /&gt;--------&lt;br /&gt;Regards,&lt;br /&gt;XXX&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;My Reply:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper" style="background-color: #f4f4f4; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; cursor: text; direction: ltr; font-family: 'Courier New', courier, monospace; line-height: 12pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 20px; max-height: 200px; overflow-x: auto; overflow-y: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 97.5%;"&gt;&lt;pre id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;Hi,&lt;br /&gt;&lt;br /&gt;How can I help you? You can buy the head-first Java book and study before checking &lt;span style="color: blue;"&gt;out&lt;/span&gt; the simulator questions.&lt;br /&gt;&lt;br /&gt;There are many SCJP groups also around.&lt;br /&gt;&lt;br /&gt;All da best.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;JK&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;&lt;i&gt;Her &lt;/i&gt;reply:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;Subject: thanks&lt;br /&gt;&lt;br /&gt;Thanks ur kind reply sir....&lt;br /&gt;i need to know about some advanced java topics....&lt;br /&gt;jsp ejb,rmi,ajax,hibernate,jaas....&lt;br /&gt;how to run jsp &lt;span style="color: blue;"&gt;in&lt;/span&gt; eclipse....&lt;br /&gt;through net i follwed all steps to run jsp...but till my program not work proper...&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;XXX&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;OH MY GOD!!!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-1622699528141902089?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/1622699528141902089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/07/oh-my-god.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/1622699528141902089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/1622699528141902089'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/07/oh-my-god.html' title='Oh My God!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-9182407400370169164</id><published>2011-07-14T21:36:00.002+10:00</published><updated>2011-07-15T09:31:23.094+10:00</updated><title type='text'>Hambantota: A Rare Successful Marketing Strategy From Sri Lanka!</title><content type='html'>&lt;div align="justify"&gt;&lt;a href="http://en.wikipedia.org/wiki/Hambantota" target="_blank"&gt;Hambantota&lt;/a&gt;, a southern city of Sri Lanka, a name which is being buzzed around&amp;nbsp;lately&amp;nbsp;for several reasons. Recently they built a cricket stadium for few of &amp;nbsp;the ICC Cricket World Cup 2011 matches. An international airport is being under construction. A new A2 highway is connecting the cities of Colombo, Galle and Hambantota. $360 million worthy of harbour project’s first phase is just completed by the Chinese vendors. The city is hosting the 2011 South Asian Beach Games which only very few Sri Lankans are even aware of. On top of everything, the city is bidding for commonwealth games 2018, competing with Gold Coast, Australia!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Fair enough! any Town and Country planning would follow the same strategic model. They will set up the infrastructure, one after the other and then they would host an international events there in order to get the international attention, the foreign investments would flow in; Boom! the city's development graph will head towards to peak. KL, Malaysia did it. Barcelona, Spain did it so does Hambantota!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Wait a minute, its not over yet! Hambantota is doing all these with minimum or no investment! That's the beauty of it. They have let the Chinese to take over the Harbour project&lt;em&gt;(Which I personally feel, the city should have been &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Trincomalee" target="_blank"&gt;&lt;em&gt;Trincomalee&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, has a natural harbour, overlooked due to the recently ended civil war and probably the president of the country isn’t from this region),&lt;/em&gt; China has its own political and regional security strategies to do this project. Sri Lanka used the regional power tag o’ war between India and China to net as much fish as possible. Again, an intelligent minnow would do the same. Excellent diplomatic strategy, something we all can learn from this. Kudos!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The most interesting part is the commonwealth games bid. The city as of now has virtually zero infrastructure except a highway and an international stadium. And the bid ensures to build the necessary infrastructure by 2016, which is five years from now. Knowing what happened in Delhi 2010 Commonwealth games and the maturity of the Gold Coast as a sporting city, only a miracle can win the bid for Hambantota. I know it. You know it. Everybody knows it. But Hambantota still bids for it! &lt;strong&gt;Why?&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Its a marketing strategy! a long term marketing strategy!! There are fifty four nations participating in commonwealth games. Commonwealth games is probably the second best multi-sport event only next to Olympics. Bidding for such events, especially when competing one of only two final bidders itself will promote the image of the city widely. Now 54 countries’ news stations, media, politicians, merchants and general public is going to talk about the city. The buzz will be around until the election is held, and who knows, there could even be a chance of getting the games by 2022 or 2026 with this strategy!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Its not over yet. So why Sri Lanka needs to promote this city heavily? Obviously one reason is the political power head and his relatives are from this city, and they are making their foundation stronger and stronger. Fine! Another reason is the Harbour. The harbour is built and everything done around this city can be traced back to the Harbour’s business strategies. I am sure the port authorities will fly with Commonwealth Games committee to all the nations. While the committee is promoting the games’ bid, the authorities would be promoting the port. There is already a tax free port zone and no doubt it has all the ingredients to attract the marine merchants. All what authorities want is the tipping point. Commonwealth games are one of many tipping points government is trying out.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.asiantribune.com/files/images/H%20Port%20plan%205.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="http://www.asiantribune.com/files/images/H%20Port%20plan%205.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Is the promotional campaign working? Is the port getting the enough limelight among the countries especially there are Thoothukudi, Colombo and Singapore ports around the region? Of course it happens big time. Indians screwed up their potential killer project “&lt;a href="http://en.wikipedia.org/wiki/Sethusamudram" target="_blank"&gt;Sethu Samundram&lt;/a&gt;” by making non-sense religions sentiments of the bridge between India and Sri Lanka. Colombo Port is still going strong and undergoing expansion projects, but I get the feeling that it is already congested and out promoted by its own country’s government over Hambantota! Singapore is only left, which is considered one of the well modelled port city with the reputation for its high quality services and standards. But its geographical significance can simply be overtaken by Hambantota in future.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The fear is already started. There were rumours of Singapore’s powerhouses tried their maximum to stop/halt the progress of the Hambantota Port. It will take time, but the Hambantota graph is steady and exponential and I am sure it will soon take over the position of Shipping Hub of Asia from Singapore!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/-_Nj-e21VgCE/Th7TzRd0t9I/AAAAAAAAAx8/X1-KH0_kSek/s1600-h/279016_10150251014101185_533996184_7489922_2129015_o%25255B2%25255D.jpg" style="margin-left: auto; margin-right: auto;"&gt;&lt;img alt="279016_10150251014101185_533996184_7489922_2129015_o" border="0" height="244" src="http://lh3.ggpht.com/-2MyZgS7OXZM/Th7T0Vr36XI/AAAAAAAAAyA/Nvy7Kb7HTbg/279016_10150251014101185_533996184_7489922_2129015_o_thumb.jpg?imgmax=800" style="background-image: none; border-bottom-color: initial; border-bottom-style: initial; border-bottom-width: 0px; border-left-color: initial; border-left-style: initial; border-left-width: 0px; border-right-color: initial; border-right-style: initial; border-right-width: 0px; border-top-color: initial; border-top-style: initial; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="279016_10150251014101185_533996184_7489922_2129015_o" width="183" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Thanks Jayanthan for the source!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-9182407400370169164?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/9182407400370169164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/07/hambantota-rare-successful-marketing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/9182407400370169164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/9182407400370169164'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/07/hambantota-rare-successful-marketing.html' title='Hambantota: A Rare Successful Marketing Strategy From Sri Lanka!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-2MyZgS7OXZM/Th7T0Vr36XI/AAAAAAAAAyA/Nvy7Kb7HTbg/s72-c/279016_10150251014101185_533996184_7489922_2129015_o_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-6158568676260524878</id><published>2011-07-11T22:50:00.001+10:00</published><updated>2011-07-11T22:51:47.076+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hsenid'/><category scheme='http://www.blogger.com/atom/ns#' term='process'/><category scheme='http://www.blogger.com/atom/ns#' term='Telco'/><title type='text'>Technical Account Management</title><content type='html'>&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;It was year 2007, one day my CEO called me and told that I may have to manage the technical aspects of one of our clients in Singapore hence I will have a role called “Technical Account Management”. For a moment, I was little shocked, even worried whether I have to recall my accounting subject which I did ten years back.So I asked him the job description, and he said I am already doing it for some extent and now will be officially doing it. I was still not sure what was it all about, so as usual I called my friend in Singapore and asked her what is this role and that was when I really got to know this discipline &lt;em&gt;&lt;strong&gt;Technical Account Management&lt;/strong&gt;&lt;/em&gt;! &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-dsq9bt9y_dA/ThrxH5GbwiI/AAAAAAAAAx4/WU3Fs7nhrAg/s1600/tam.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-dsq9bt9y_dA/ThrxH5GbwiI/AAAAAAAAAx4/WU3Fs7nhrAg/s1600/tam.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;br /&gt;Technical Account Management is nothing but simply being the first point of contact for the technical and solution consultancy portions of your company business with an account aka client, a technical face! I feel its not a position one would hold, but just a role, requires some diverse abilities from the person which something you can’t just learn from some books or persons but only develop by your own. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Based on the feedback I had received from both clients and my company, I feel I probably have played the role credibly over the last four years and now trying to list the important aspects which would take you to become better in this stream!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 align="justify"&gt;1) Understand your company and the products!&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;You are neither a sales person nor a marketing person. But you should know what is the business your company doing. Especially the product suite and their technical stack. Often sales people would come and&amp;nbsp; kick start the sales and then leave it to you to handle the rest. There will be times you may need to act as a mediator. But you will realise, being a mediator will only reduce the confident level so you will eventually study your product suite and take over the pre-sales and business solutions work for the corresponding account!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 align="justify"&gt;2) Understand the client domain&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Its very important to understand the people, process and technology of the client you working for, basically the domain knowledge. You are a kind of felicitator between your company and the client. So often both the party will turn to you get each others’ information. And you will have a bigger role of solving problems for clients. In order to do that, you need to know the client’s domain and your company’s solutions do you can find a way to solve the problems by using both these knowledge.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 align="justify"&gt;3) Ability to find the solutions during the discussions!&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;As a Technical Account Manager, the client will call you for anything. All the way from clarifying a requirement in your proposal, a functionality of the existing system, a time line of a delivery, seeking a suggestion on how to integrate their existing system with your products, quotation negotiation and even sometimes a professional support query. Most of the times you will not be able to say, you don’t know or you will get back to them later. They usually want immediate useful answers, that’s why they call you. So you should be able to find a solution which can be accepted by the client and the same time by your own team. Because you will have hard time bringing this solution back to your own team to convince them too. I have been in to a situation where I proposed some viable solutions to client and then when I turned back, I had to face nightmares negotiating it to my own team. Its tough folks!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 align="justify"&gt;4) Be Professional But Make Friends&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Its a professional environment especially when you work with a customer, there is no room for complacency what so ever. But making good friends from them is always complimentary. You anyway need to create a peaceful environment to work with. If you bluff too much or trying to talk too sweet, it won’t work. Remember the person you talking to is from the same IT world and he or she would have seen the bluffers and sweet talkers already. So my take is, be professional and ruthless but nice to customer. And always try to make good friends, clearly understand the boundary between personal and professional friendship, so you can have a peaceful professional and personal life without much of itches!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 align="justify"&gt;5) Make customer feel he or she is right. But you always try to do the right thing!&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Whatever said and done, customer is the ultimate god! so you need to listen to the customer. And customer knows the domain better than you. So its very important you understand that you may be wrong at times. So&amp;nbsp; listen to customer. But always realise customer may not the be the best problem solver. That’s one of the reason why you are getting paid! So find the best solution for the problem and communicate in a way that everybody can feel happy. Some times you may have to derive the solution from the customer similar to what you have thought in your mind. Its an art and when you do it, it will bring you kind of a pursuit of happiness!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 align="justify"&gt;6) Always ask why!&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;My personal experience is, most of the time clients bring you a solution by themselves and ask you whether is it doable. They wouldn’t know how to put forward a problem as it is. Its quite natural people tempt to explain a problem with a solution in their mind. So make sure you never fall for this trap and accept what customer asks as it is. Instead try to elicit the problem from them and try to find a best suitable solution for the problem. Then don’t just put your solution forward by turning customer’s solution down! It will only backfire you! The IT world is full of egos and you have to deal with it, no matter you like it or not. So you will have to take customer’s solution as the baseline and mould it into your solution in a seamless manner so no one could realise its intentionally changed to another. So it will be a win – win situation in the end as customer would go back home thinking his or her solution was appreciated.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 align="justify"&gt;7) Follow The Politics, But Never Be Part Of It!&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Every organisation, including your own has politics and the depth of the politics is proportional to the scale of the organisation. So it will be easy to be get dragged into the customer side politics especially when you work with different departments of your client domain. Its good you understand what’s going around. So you can be careful not to fall into any traps. But never join the internal political rallies .. ha ha ha. Its easy to say but hard to follow, since these politics are always interesting and we would be tempted to take a side of it, but never ever do it! Remember you represent a vendor company and its import you keep yourself away from the politics. Respect each and every person at the client site irrespective of their position and rank they hold in the company,(of course applicable to your own company too!) &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;These seven points just come to my mind. There could be more, if any I will update the post duly!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;&lt;span style="font-size: xx-small;"&gt;Disclaimer: This is solely my personal take on how to do this role. And it had lot to do with the nature of the client and the vendor, where in my case, I had to do most of the things single handed alone in Singapore. But for a bigger enterprise, the responsibilities can be shared and it could be little lesser demanding I guess!&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-6158568676260524878?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/6158568676260524878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/07/technical-account-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6158568676260524878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6158568676260524878'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/07/technical-account-management.html' title='Technical Account Management'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-dsq9bt9y_dA/ThrxH5GbwiI/AAAAAAAAAx4/WU3Fs7nhrAg/s72-c/tam.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-6060328662400762593</id><published>2011-07-10T00:01:00.005+10:00</published><updated>2011-07-10T00:47:34.579+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='contemporary'/><category scheme='http://www.blogger.com/atom/ns#' term='short story'/><title type='text'>My Relationships!!!</title><content type='html'>&amp;nbsp; &lt;br /&gt;&lt;div align="justify"&gt;I am right here at the &lt;a href="http://www.changiairport.com/" target="_blank"&gt;Changi airport&lt;/a&gt;, Singapore, gate number 15, waiting to board into EK 404, the flight to Melbourne.&amp;nbsp; There is a little girl, sitting in the same row, is playing something on her iPad2. I can see her excitement and the care when using it, a brand new piece. What was I doing at age of nine? &lt;a href="http://en.wikipedia.org/wiki/Indian_Peace_Keeping_Force" target="_blank"&gt;Indian Peace Keeping Force(IPKF)&lt;/a&gt; was on the march to capture &lt;a href="http://en.wikipedia.org/wiki/Jaffna_" target="_blank"&gt;Jaffna &lt;/a&gt;town. I can still recall a moment, my father was carrying me while fleeing to &lt;a href="http://en.wikipedia.org/wiki/Nallur_Kandaswamy_temple" target="_blank"&gt;Nallur Temple&lt;/a&gt; with all my neighbourhood families with the belief of forces won’t attack religious places, there was a shell went pass us and exploded few hundred meters away. We all fell, father, mother, brother and sisters, we all fell down on the ground. Fortunately none of us hurt, we just had scratches! I stare at this little girl playing with iPad now. I can see a great peace in this girl’s face! Reminding me &lt;a href="http://www.youtube.com/watch?v=tTnzIMngPIs&amp;amp;feature=related" target="_blank"&gt;this soulful song&lt;/a&gt; from academy away winner &lt;a href="http://en.wikipedia.org/wiki/A._R._Rahman" target="_blank"&gt;A R Rahman.&lt;/a&gt; Who the heck said “The World Is Flat?”&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-hS6Lg9ZurBI/Thheaf4_kRI/AAAAAAAAAxI/KBENzRTBvH0/s1600-h/dome%25255B4%25255D.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img align="right" alt="dome" height="84" src="http://lh5.ggpht.com/-OgWj9-N2ki8/ThhebNcQszI/AAAAAAAAAxM/PoT_6H-gSYM/dome_thumb%25255B2%25255D.jpg?imgmax=800" style="cursor: move; display: inline; float: right;" title="dome" width="143" /&gt;&lt;/a&gt;My friends Kajan, Ajee and his wife Laxmy all came to airport to give me a warm send off. We went for coffee at the airport &lt;a href="http://www.domecoffees.com.au/" target="_blank"&gt;Dome Cafe&lt;/a&gt;.&amp;nbsp; We were chit chatting about my future plans, Kajan’s wife called from&amp;nbsp; Colombo and wished me too, not to forget their son Sangeeth, the kid is too cute and we always love playing together. Thank you guys!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-btWN1TL6wSo/ThhebjyjV3I/AAAAAAAAAxQ/Ug3zhN6lK7I/s1600-h/book_the_world_is_flat%25255B5%25255D.gif"&gt;&lt;img align="left" alt="book_the_world_is_flat" height="160" src="http://lh6.ggpht.com/-2IEap7NsftI/ThhecR1MDEI/AAAAAAAAAxU/hkwmhcwxE0k/book_the_world_is_flat_thumb%25255B3%25255D.gif?imgmax=800" style="display: inline; float: left;" title="book_the_world_is_flat" width="153" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;Suddenly Ajee and Laxmi presented a gift, I opened it and it was&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/The_World_Is_Flat" target="_blank"&gt;Thomas Friedman’s "The World Is Flat"&lt;/a&gt;. Ajee has been recommending this to read for long time, an influential book for him. I don’t remember a day he forgot to talk about this book. Now he has given his own copy of such a book to me. It takes greater courage for someone to present the book he or she owns and loves. Its our habit, while presenting books to each other, we make sure, &lt;a href="http://lh4.ggpht.com/-VEnFbEu9L-A/ThhedIwv89I/AAAAAAAAAxY/1F_PjyJQVGc/s1600-h/tipping_2%25255B4%25255D.jpg"&gt;&lt;img align="right" alt="tipping_2" height="164" src="http://lh4.ggpht.com/-DD-3KWPFoCY/ThheduSxADI/AAAAAAAAAxc/aClaFeB5fpw/tipping_2_thumb%25255B2%25255D.jpg?imgmax=800" style="display: inline; float: right;" title="tipping_2" width="104" /&gt;&lt;/a&gt;we don't give it just for the sake of giving it. When you present a book to someone, either you should have read and realised that the receiver would adore it or it should be a book he or she long waiting to read it! Two weeks back, I visited Ajee’s place for a dinner and presented my &lt;a href="http://en.wikipedia.org/wiki/The_Tipping_Point" target="_blank"&gt;Gladwell’s “The Tipping Point”&lt;/a&gt; copy to him. Its a book I loved when reading, its a book which was in Ajee’s reading list so I was sure, he was going to read it! Now its my time to read “The World Is Flat”, I will start it once I finished my current reading &lt;a href="http://en.wikipedia.org/wiki/Mort" target="_blank"&gt;Terry Pratchett’s Mort&lt;/a&gt;!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Mort, a gift to me, during my last days at hSenid from my colleague turned friend Harsha,. The book is a serious and &lt;em&gt;serial&lt;/em&gt; exciting, a topic which is something I am passionate to know about. The novel is full of metaphorical critics on mankind’s beliefs. A story of Death and his apprentice Mort. The flow is so demanding and tricky with full of clichés, made me reading some of the pages twice &lt;a href="http://lh6.ggpht.com/-jQJZgW0sFmc/ThhefGnlTQI/AAAAAAAAAxg/8GWyyHpEshc/s1600-h/mort-1%25255B4%25255D.jpg"&gt;&lt;img align="left" alt="mort-1" height="156" src="http://lh6.ggpht.com/-rMC3UUfLHqY/Thhef8MGTlI/AAAAAAAAAxk/B52-urV_Wb8/mort-1_thumb%25255B2%25255D.jpg?imgmax=800" style="display: inline; float: left;" title="mort-1" width="90" /&gt;&lt;/a&gt;before understanding the theme of them. I was almost stuck at the re-annual farm concept. Is he challenging the belief on so-called destiny being designed upfront? Clueless metaphor!!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;My friend, Anbu bought me &lt;a href="http://www.amazon.com/R-Rahman-Spirit-Music/dp/9380070144" target="_blank"&gt;“The Sprit Of Music”&lt;/a&gt;&amp;nbsp; from India. The book was by then just got released, only in India. There were couple of other friends who were in India too. But I only asked Anbu, because I know he loves music and he can understand how much I was already excited about that book. So he bought and given it as a gift. &lt;a href="http://lh4.ggpht.com/-LLixA_hdE6U/Thhegg5liXI/AAAAAAAAAxo/4x7JWZPyUds/s1600-h/Fwd-AR-Rahman-The-Spirit-of-Music-Event-Pictures-1%25255B5%25255D.jpg"&gt;&lt;img align="right" alt="Fwd-AR-Rahman-The-Spirit-of-Music-Event-Pictures-1" height="191" src="http://lh6.ggpht.com/-IcN4sXoUoZs/ThhehaxIp3I/AAAAAAAAAxs/LoZmBy73pK8/Fwd-AR-Rahman-The-Spirit-of-Music-Event-Pictures-1_thumb%25255B2%25255D.jpg?imgmax=800" style="display: inline; float: right;" title="Fwd-AR-Rahman-The-Spirit-of-Music-Event-Pictures-1" width="124" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Amudha, my best friend in Singapore by far, who shares probably the maximum common interests with me,&amp;nbsp; read &lt;a href="http://en.wikipedia.org/wiki/The_Namesake" target="_blank"&gt;Lahiri’s “The Namesake”&lt;/a&gt; under interesting circumstances. It was the time I wrote the &lt;a href="http://jk-blogging.blogspot.com/2010/04/i-am-jake-in-short-jk-errrh-jessie.html" target="_blank"&gt;“Coffee”&lt;/a&gt; story in Australia. She is usually the first reader of my stories, she is a native English speaker, so I usually ask her to review before go on to publish any of my stories, so did the case for this too. While reading, she told me she bought “The Namesake” when visiting to Kolkata recently, but haven’t touched it still. I told her its a must read, especially being married to a Bengali gentleman who’s migrated to Singapore, she can relate a lot from the book. She nodded, they both went for a weekend trip to &lt;a href="http://en.wikipedia.org/wiki/Sabah" target="_blank"&gt;Sabah, Malaysia&lt;/a&gt;. She finished reading it while just relaxing in the beautiful beaches of Sabah. It was so meditative she said though was bit slow in pace. Of course it was Namesake! &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;There is something common on the books Ajee, Harsha, Anbu and Amudha shared with &lt;a href="http://lh5.ggpht.com/-F4eOMWvhxF4/ThheiOI80nI/AAAAAAAAAxw/44rN1CxxHWY/s1600-h/namesake%25255B4%25255D.jpg"&gt;&lt;img align="left" alt="namesake" height="152" src="http://lh3.ggpht.com/-eGx0X4kAMi4/ThheiyYX37I/AAAAAAAAAx0/Zok68V2PV6M/namesake_thumb%25255B2%25255D.jpg?imgmax=800" style="display: inline; float: left;" title="namesake" width="93" /&gt;&lt;/a&gt;me. The respective books are totally different in their genres. One is about business, other is about music, another on man kind’s beliefs and theories around it and “The Namesake” is contemporary.&amp;nbsp; But they represents the type of relationship we share between the presenter and the receiver. With Ajee, we usually discuss on career, financial and personal management, so exchanging “The Tipping Point” and “The World Is Flat” represent that flavour. With Harsha, we usually discuss Antagonism, Theory of God, Life After Death, relationships and of course girls, so it was apt he gave me Mort. Anbu, a guitarist by himself, discusses a lot on music with me, so it was A R Rahman’s biography. Amudha shares more close to heart friendship, someone who mentors me in life! So it was not surprising that it was the book “The Namesake”&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;br /&gt;I am clueless on how to end this post. Post modernist writing style emphasizes not to stick with any plans on writing. Let your thinking to wander and flow like a river and it will reach the final destination. I feel its the destination for the post too. Its a kind of post, which doesn’t require a finishing touch. May be an open ended post!! &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;There you go, the final boarding call is made, getting ready to leave with a hope of finding more friends to share more books and relationships in Australia!! May be its a REANNUAL WRITING like Mort’s re-annual winery!!!&amp;nbsp; &lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;“The things I want to know are in books, my best friend is the man who'll get me a book I never read.” -- &lt;/em&gt;Abraham Lincoln&lt;/blockquote&gt;&lt;span style="font-size: xx-small;"&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;em&gt;Note: The content of the blog neither modified nor reviewed, keeping the feel of the moment as it is.But the links are added just now.&lt;/em&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-6060328662400762593?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/6060328662400762593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/07/my-relationships.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6060328662400762593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6060328662400762593'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/07/my-relationships.html' title='My Relationships!!!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-OgWj9-N2ki8/ThhebNcQszI/AAAAAAAAAxM/PoT_6H-gSYM/s72-c/dome_thumb%25255B2%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-8104077503030271147</id><published>2011-07-07T15:40:00.000+10:00</published><updated>2011-07-07T15:40:19.605+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='Telco'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='VAS'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Value Added Services'/><category scheme='http://www.blogger.com/atom/ns#' term='GSMA'/><title type='text'>Telcos’ Freedom Fighting!</title><content type='html'>&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;When two telecom businessmen meet, they end up crying out on &lt;a href="http://en.wikipedia.org/wiki/LTE_Advanced" target="_blank"&gt;LTE&lt;/a&gt;(Long Term Evolution) killing the telecom cash cows like Voice Calls and SMS. If you listen to some of the telecom consultants,&amp;nbsp; their focal point of the talk would be on why telecoms should not let mobile broadband or rather LTE like 4G to overhaul. So countries like Australia enforcing high usage charges on data plans while countries like Singapore trying to bring in more VAS business cases to increase the recurring revenue somehow.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;But in reality, doesn’t matter how hard you holding your grip, you can’t stop the future! Its already started to happen. In Singapore the iPhone data plans are 12G which is practically unlimited and with 4G coming, the speed will be equivalent to fixed line broadband. Who would be paying extra penny for SMS or Voice Call when your smart phone has richer chat and &lt;a href="http://www.blogger.com/www.viber.com" target="_blank"&gt;Viber&lt;/a&gt; like voice applications?&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Obviously I don’t have the magic answer for this. But I do feel there are three business models which could negotiate this challenge at different levels for Telco. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 align="justify"&gt;&lt;/h2&gt;&lt;h4 align="justify"&gt;1 Hunt for the next killer Application&lt;/h4&gt;&lt;div align="justify"&gt;&lt;img align="left" height="143" src="http://kolorkube.com/klick/wp-content/uploads/2010/08/ideas.jpg" style="display: inline; float: left;" width="224" /&gt;Talk of the city!&amp;nbsp; Every Tom, Dick and Harry talks about the killer application. The service providers, vendors and even the university students, they all have ideas. We all believe our ideas are great. We all think “This is it”. But in reality, nobody can search for a killer application. Killer application just appears from nowhere. And it happens from someone or somewhere you wouldn’t even imagine at all. From its tipping point to its popularity naturally things naturally fall into place for those applications(There are exceptional cases like how angry bird which had a well planned&amp;nbsp;marketing&amp;nbsp;strategy which was one of the reasons for its success, but still it rise had killer application symptoms). That’s the very reason why Apple or Google have opened their domain to build the applications around. The idea is to let the market to decide what they want to do with these domains. If 500000 developers try and if one of them turning to be a Mr Zuckerberg or &lt;a href="http://en.wikipedia.org/wiki/Rovio_Mobile"&gt;Rover&lt;/a&gt;, then you won’t regret anyway. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;What Telcos should all do is to become more liberal. Free up the strict regulatory constraints, and especially get out of the conventional old school mentality. I personally know how hard is to commission a new service in a Telco environment. Its their bureaucracy prevents the time to value of every ideas and&amp;nbsp; eventually ruling out the possibility of the birth of such cash cow application.&lt;/div&gt;&lt;div align="justify"&gt;So let the ground work done and let it happen! &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 align="justify"&gt;2 Pragmatic Business Approach &lt;/h4&gt;&lt;div align="justify"&gt;Recently my friend shared an article on &lt;a href="http://www.economist.com/node/18803123" target="_blank"&gt;how IBM survived over 100+ years&lt;/a&gt;. Their pragmatic business approach of not sticking to a single business model helped them evolved and survived over the years. When required they moved to laptop business, they moved to service provider business, they tried to buy Sun .. They at least tried, sometimes it worked, at times it didn’t. But they still survive in the industry. Apple does it, so does Google, but not so Microsoft, &lt;a href="http://www.economist.com/node/18803115" target="_blank"&gt;struggles&lt;/a&gt;!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://www.singpost.com.sg/" target="_blank"&gt;Singapore Post&lt;/a&gt; is another good example on how to &lt;img align="right" height="239" src="http://www.onlineusanews.com/wp-content/uploads/2011/03/vPOST-Singapore-The-Virtual-Post-Office.png" style="display: inline; float: right;" width="329" /&gt;be pragmatic. When most of the postal services around the world are running on depict, Singapore Post is generating fair amount of profit, mainly due to their flexible business strategies. They recently acquired a data printing company(Outsourcing unit of data extraction, conversion, formatting, printing and delivering). They offer inventory management services and damn! .. they selling Laptops too with free delivery!&amp;nbsp; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Telecoms move in this direction too. All three operators of Singapore have moved in to Cable TV businesses. The future of Television market looks bright with more riche features on Cable TV operations, but then Apple TV and Google TV are already on the hunt in this market. A Singapore based operator, a catching horse in this race, acquired a data centre recently, hoping to get into a data centre business and could even get into cloud services within Singapore if Data Protection regulations help their cause. But all they have done so far is nothing but bought the data centre, they simply lack the capacity or a think tank to create a business case&amp;nbsp;around&amp;nbsp;cloud based services..&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Most of the telecoms can make MSISDN as the identity token for the citizens since it has some kind of physical identity but used in virtual means. They can even provide an &lt;a href="http://www.blogger.com/www.apple.com/icloud" target="_blank"&gt;iCloud&lt;/a&gt; like services across all the mobile and pc platforms.&amp;nbsp; There are plenty of ideas running around … but!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;When there is a will, there will be certainly a way. But are they ready? Are they ready to break the rules and their strict bureaucracy? Are they big enough to realise these ideas into real?&amp;nbsp; Is there an answer?&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Merge It! … May be!&lt;/div&gt;&lt;h4 align="justify"&gt;3 Merge It!!&lt;/h4&gt;&lt;div align="justify"&gt;&lt;a href="http://www.pcmag.com/article2/0,2817,2388154,00.asp" target="_blank"&gt;Skype is introducing PSTN as a part of future Facebook calls&lt;/a&gt;. If Skype can do this with Facebook, &lt;img align="right" height="129" src="http://abolrous.com/hazem/images/united.gif" style="display: inline; float: right;" width="248" /&gt;why not every telecoms can.t do it by their own? The reason is, they don’t have the capacity. The telecoms are like marginal land kings who are paying tributes to occupant dictators these days. They can never be able to fight against Apple, Facebook or Google. Forget about the fight, they can’t even join hands with them to do&amp;nbsp; a business. The giants only want their network services to ride their businesses. Recall what did Apple do with iPad,&amp;nbsp;scrapped&amp;nbsp;the partnering with telecoms even for 3G versions, No sympathy what so ever! &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Perhaps merging would help the telecoms to counter these tactics. Just imagine if &lt;a href="http://www.blogger.com/www.maxis.com.my" target="_blank"&gt;Maxis&lt;/a&gt;, &lt;a href="http://www.blogger.com/www.telkomsel.com" target="_blank"&gt;Telkomsel&lt;/a&gt;, &lt;a href="http://www.blogger.com/www.telstra.com.au" target="_blank"&gt;Telstra&lt;/a&gt; and &lt;a href="http://www.blogger.com/www.starhub.com" target="_blank"&gt;Starhub&lt;/a&gt; are acquired by &lt;a href="http://www.blogger.com/www.vodafone.com" target="_blank"&gt;Vodafone&lt;/a&gt;, it almost brings a billion subscriber base for Vodafone from the APAC region. Now when Vodafone goes on to do a business talk with Facebook, Apple or Google, they can’t ignore it. Its the era where the user base matters most. That’s the very reason &lt;a href="http://www.webpronews.com/facebook-blocks-google-friend-exporter-extension-2011-07" target="_blank"&gt;Facebook blocked the Friends Exporter extension of Chrome&lt;/a&gt; when &lt;a href="http://plus.google.com/" target="_blank"&gt;G+&lt;/a&gt; picked off. So increase your user/subscriber base by mergers and acquisitions. It opens up your business as well letting you to realising your crazy ideas too. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;So sometimes you make it happen, sometimes you let it happen! But nevertheless it should somehow happen!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-8104077503030271147?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/8104077503030271147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/07/telcos-freedom-fighting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/8104077503030271147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/8104077503030271147'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/07/telcos-freedom-fighting.html' title='Telcos’ Freedom Fighting!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-3999052495435084495</id><published>2011-07-05T06:27:00.000+10:00</published><updated>2011-07-05T06:27:52.886+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nosql'/><category scheme='http://www.blogger.com/atom/ns#' term='mongodb'/><category scheme='http://www.blogger.com/atom/ns#' term='rdbms'/><title type='text'>Yes and No for NoSQL</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;How you gonna persist your data?&lt;/span&gt;&lt;/span&gt;&lt;img align="right" height="133" src="http://www.thebuzzmedia.com/wp-content/uploads/2010/07/mongo-db-huge-logo.png" style="display: inline; float: right;" width="393" /&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;ORM?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;What’s the tool?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Hibernate..JPA&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;You using any transactional operations?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Nope, its pretty straight forward data storing!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Is the relationship complex?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Yea it is…&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;How do you claim its complex for a straightforward data storing?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Mmm .. Well there are many objects and we have pretty referential entities back and forth!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;So you are using class diagrams and then use hibernate to create the schema, technically you don’t even know how is your physical schema looking like?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Afraid yes!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;So your so called objects relationship queries may create join operations, and for the god’s sake if you enabled lazy loading false and no paging done, you gonna have a big trouble maite!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Well it works!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;It works at your development phase of course! &lt;a href="http://en.wikipedia.org/wiki/Rdbms_" target="_blank"&gt;RDBMS &lt;/a&gt;should not be your first choice, The design should demand RDBMS schema, You don’t use sword to cut your nails, do ya? &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Okies.. so what’s the options, some MQ servers?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;C'mon, heard about &lt;a href="http://en.wikipedia.org/wiki/NoSQL" target="_blank"&gt;NoSQL&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Mongodb" target="_blank"&gt;MongoDB&lt;/a&gt;?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Ah yeah, the key-value database? So we gonna put everything in key value pair? That does really sound weird?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Huh .. Not necessarily, idea is not to over design. You can store your data in a simple domain specific &lt;a href="http://en.wikipedia.org/wiki/Json_" target="_blank"&gt;JSON &lt;/a&gt;format and insert and query with &lt;a href="http://en.wikipedia.org/wiki/NoSQL" target="_blank"&gt;NoSQL&lt;/a&gt; … simple?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;How about the transactional operations and data integrity?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Well, that should be in the requirements and you gotta design by your own!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;mmm.. then there is a tool called &lt;a href="http://code.google.com/p/morphia/" target="_blank"&gt;Morphia&lt;/a&gt;, you can annotate your entities and it will create &lt;a href="http://www.json.org/" target="_blank"&gt;JSON&lt;/a&gt; automatically? I can do these from code itself!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;No way,&amp;nbsp; … The reason we moving away from &lt;a href="http://en.wikipedia.org/wiki/Rdbms_" target="_blank"&gt;RDBMS &lt;/a&gt;is, the design doesn't;t demand any relational schema, which means this is simple enough to design our &lt;a href="http://www.json.org/" target="_blank"&gt;JSON&lt;/a&gt; and write the &lt;a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete" target="_blank"&gt;CRUD&lt;/a&gt; operations by our own. Then we will know what are we doing here!!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;So what do you exactly want?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Design the &lt;a href="http://www.json.org/" target="_blank"&gt;JSON&lt;/a&gt;. Design how your data gonna be in the DB and then bind it with your code! Write the &lt;a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete" target="_blank"&gt;CRUD&lt;/a&gt; operations with direct &lt;a href="http://www.mongodb.org/" target="_blank"&gt;MongoDB&lt;/a&gt; queries .. You write and test your own code! &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;That would be difficult, I think that’s why &lt;a href="http://en.wikipedia.org/wiki/Object-relational_mapping" target="_blank"&gt;ORM&lt;/a&gt; is introduced right!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Indeed, recall why EJB and Application servers were introduced and then moved to more simpler and Spring like light weight IOC container?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Well EJB was too complex, unnecessary for what we would wanna do most of the times. Spring like environments let us design and code what we exactly need?&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Yea, that doesn’t mean EJBs are useless anyway right, if you indeed have very complex transactional processes, you might still want EJBs, partly due to your competency of the resources also !!! Not everybody would be comfortable designing from the core of the requirements, they would want the help of J2EE rite? &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Yes, same case for &lt;a href="http://en.wikipedia.org/wiki/RDBMS" target="_blank"&gt;RDBMS&lt;/a&gt; too, they are indeed better for complex transactional processing, supporting transactions, avoiding duplicates with primary and secondary keys, join operations etc. For example, a banking sector wouldn’t risk its data integrity, so it would use J2EE with &lt;a href="http://en.wikipedia.org/wiki/RDBMS" target="_blank"&gt;RDBMS&lt;/a&gt; with well established products! But for larger data with high performance &lt;a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete" target="_blank"&gt;CRUD&lt;/a&gt; required, for example, in a messaging system, &lt;a href="http://en.wikipedia.org/wiki/NoSQL" target="_blank"&gt;NoSQL&lt;/a&gt; is better off. Data integrity is something you gotta design, but its worth if its not comp&lt;span&gt;&lt;/span&gt;lex. Going for &lt;a href="http://en.wikipedia.org/wiki/RDBMS" target="_blank"&gt;RDBMS&lt;/a&gt; for this kind of requirement is costly in terms of hardware and software!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;So start with NoSQL unless the model demands RDBMS badly …&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Yes! Use it wisely! &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;/blockquote&gt;Oracle’s Ask Tom has answered critically on &lt;a href="http://www.blogger.com/Reference%20:%20http://asktom.oracle.com/pls/asktom/f?=100:11:0::::P11_QUESTION_ID:2664632900346253817" target="_blank"&gt;This&lt;/a&gt;&lt;br /&gt;&lt;em&gt;What I've seen happen again and again and again is that when something truly useful database wise evolves - so evolves the RDBMS. There are lots of fresh starts that get subsumed over time. There are many things in the database right now that you need over time and that would take a long time to re-invent. And remember (this is important), these specialized databases are just that - specialized. They are not general purpose - they are very good at what they do - but they do not do it for everyone. And they will end up being abused (just like XML, and all 'technologies' like that have been) and over used, used in the wrong place.&lt;/em&gt;&lt;br /&gt;&lt;em&gt; &lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;So, what I think you'll see is the feature set of the two merge into one (again). The truly useful aspects of one will combine with the other - making something larger.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;And remember also, most people are not building Facebook, they are building reservation systems, tracking systems, hr systems, finance systems, order entry systems, banking systems, etc. - things where transactions are sort of important (lose my status update - no big deal, lose my $100 transfer and I'm sort of mad). There is room for a lot of things out there.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-3999052495435084495?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/3999052495435084495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/07/yes-and-no-for-nosql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3999052495435084495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3999052495435084495'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/07/yes-and-no-for-nosql.html' title='Yes and No for NoSQL'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-2235033342203523160</id><published>2011-06-30T23:30:00.001+10:00</published><updated>2011-06-30T23:30:02.516+10:00</updated><title type='text'>Cruel Thirties!</title><content type='html'>&lt;div align="justify"&gt;This post is not a cry of getting into my thirties, you don’t cry when you get older, otherwise nobody would be celebrating their birthdays. This is a post about how cruel a Thirty would become, if you are not moved on from what you were doing in your teens and early twenties!!! &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Let’s take a shot at it, the influencing characters of my teen ages and twenties. The best offside player of his time,&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Sourav_Ganguly" target="_blank"&gt;Saurav Ganguly&lt;/a&gt; and by far the best bowler in the history of cricket,&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Shane_Warne" target="_blank"&gt;Shane Warne&lt;/a&gt; are no more playing. &lt;a href="http://en.wikipedia.org/wiki/Michael_Jackson" target="_blank"&gt;Michael Jackson&lt;/a&gt; is passed away two years back. Genius Indian composer &lt;a href="http://en.wikipedia.org/wiki/Illayaraja_" target="_blank"&gt;Illayaraja &lt;/a&gt;is not composing music as good as he used to do. The legendary contemporary writer &lt;a href="http://en.wikipedia.org/wiki/Sujatha_Rangarajan" target="_blank"&gt;Sujatha&lt;/a&gt; passed away two years back. No &lt;a href="http://en.wikipedia.org/wiki/Ronaldo" target="_blank"&gt;Ronaldo&lt;/a&gt;&amp;nbsp;is in football. &lt;a href="http://en.wikipedia.org/wiki/Bill_Gates" target="_blank"&gt;Bill Gates&lt;/a&gt; is doing Charity and enjoying his retirement life. &lt;a href="http://en.wikipedia.org/wiki/Steve_Jobs" target="_blank"&gt;Steve Jobs&lt;/a&gt; is still roaring, but his body is tired and weakened unfortunately. Promising &lt;a href="http://en.wikipedia.org/wiki/Sun_Microsystems" target="_blank"&gt;Sun&lt;/a&gt; is already cherished and &lt;a href="http://en.wikipedia.org/wiki/James_Gosling" target="_blank"&gt;Gosling&lt;/a&gt; was all over the place and finally joined Google without knowing what exactly he is going to do! Who would have thought the fates of &lt;a href="http://en.wikipedia.org/wiki/Prabhakaran" target="_blank"&gt;Prabakaran&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Sadam" target="_blank"&gt;Sadam&lt;/a&gt; would be decided in this manner? And many presumes Java’s beginning of end is already started!!!&lt;/div&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:66721397-FF69-4ca6-AEC4-17E6B3208830:99dcea66-900f-4347-b006-7e9f554f1357" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-style: none; margin: 0px; outline: none; padding: 0px; width: 400px;"&gt;&lt;tbody&gt;&lt;tr&gt;                        &lt;td colspan="2" style="border-style: none; margin: 0px; outline: none; padding: 5px 0px 5px 5px; vertical-align: bottom; width: 157px;"&gt;&lt;br /&gt;&lt;a border="0" href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=play&amp;amp;resid=4D48CB3E7E2CD275!148&amp;amp;parid=4D48CB3E7E2CD275!147&amp;amp;type=1&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos&amp;amp;authkey=cuAjFAPjR8w%24" style="border-style: none; margin: 0px; outline: none; padding: 0px;" target="_blank"&gt;                                &lt;img alt="View album" border="0" height="157" src="http://lh4.ggpht.com/-Lx_OQNWhzc8/TgwBSry9ObI/AAAAAAAAAuo/VyVr9-UdVo4/-100201276779CDC90F.png?imgmax=800" style="background-image: none; background: none; border-style: none; border: 0px; margin: 0px; outline: none; padding: 0px; vertical-align: bottom;" title="View album" width="157" /&gt;&lt;/a&gt;                        &lt;/td&gt;                        &lt;td colspan="3" style="border-style: none; margin: 0px; outline: none; padding: 5px 5px 5px 0px; vertical-align: middle; width: 223px;"&gt;&lt;div style="margin-left: 10px; top: -3%;"&gt;&lt;div style="overflow: visible; width: 223px;"&gt;&lt;a href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=browse&amp;amp;resid=4D48CB3E7E2CD275!147&amp;amp;type=5&amp;amp;authkey=cuAjFAPjR8w%24&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos" style="text-decoration: none;" target="_blank"&gt;&lt;span defaulttext="Enter album name here" style="font-family: 'Segoe UI', helvetica, arial, sans-serif; font-size: large; line-height: 1.26em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 223px;"&gt;No More!&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 0px; padding: 10px 0px 0px 0px;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-style: none; margin: 0px; outline: none; padding: 0px; width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;                                            &lt;td style="border-style: none; margin: 0px; outline: none; padding: 10px 15px 6px 0px; vertical-align: top;"&gt;&lt;a border="0" href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=play&amp;amp;resid=4D48CB3E7E2CD275!147&amp;amp;type=5&amp;amp;authkey=cuAjFAPjR8w%24&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos" style="border-style: none; font-family: 'Segoe UI', helvetica, arial, sans-serif; font-size: 8pt; margin: 0px; outline: none; padding: 0px; text-decoration: none;" target="_blank"&gt;VIEW SLIDE SHOW&lt;/a&gt;&lt;/td&gt;&lt;td style="border-style: none; margin: 0px; outline: none; padding: 10px 0px 6px 0px; vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;                     &lt;/tr&gt;&lt;tr&gt;&lt;td style="border-style: none; height: 76px; margin: 0px; outline: none; padding: 0px 5px 5px 5px; vertical-align: bottom; width: 76px;"&gt;&lt;a border="0" href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=play&amp;amp;resid=4D48CB3E7E2CD275!149&amp;amp;parid=4D48CB3E7E2CD275!147&amp;amp;type=1&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos&amp;amp;authkey=cuAjFAPjR8w%24" style="border-style: none; font-family: 'Segoe UI', helvetica, arial, sans-serif; font-size: 8pt; margin: 0px; outline: none; padding: 0px; text-decoration: none;" target="_blank"&gt;&lt;img alt="View album" border="0" height="76" src="http://lh4.ggpht.com/-IWB2C1JJqW4/TgwBS728cKI/AAAAAAAAAus/hx_5nF7qsOc/-130507224600ED0588.png?imgmax=800" style="background-image: none; background: none; border-style: none; border: 0px; margin: 0px; outline: none; padding: 0px; vertical-align: bottom;" title="View album" width="76" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-style: none; height: 76px; margin: 0px; outline: none; padding: 0px 5px 5px 0px; vertical-align: bottom; width: 76px;"&gt;&lt;a border="0" href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=play&amp;amp;resid=4D48CB3E7E2CD275!150&amp;amp;parid=4D48CB3E7E2CD275!147&amp;amp;type=1&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos&amp;amp;authkey=cuAjFAPjR8w%24" style="border-style: none; font-family: 'Segoe UI', helvetica, arial, sans-serif; font-size: 8pt; margin: 0px; outline: none; padding: 0px; text-decoration: none;" target="_blank"&gt;&lt;img alt="View album" border="0" height="76" src="http://lh5.ggpht.com/-ZcpGeDw88X8/TgwBTZRPv1I/AAAAAAAAAuw/ehHoe3DSguU/-18950156956BFB8314.png?imgmax=800" style="background-image: none; background: none; border-style: none; border: 0px; margin: 0px; outline: none; padding: 0px; vertical-align: bottom;" title="View album" width="76" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-style: none; height: 76px; margin: 0px; outline: none; padding: 0px 5px 5px 0px; vertical-align: bottom; width: 76px;"&gt;&lt;a border="0" href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=play&amp;amp;resid=4D48CB3E7E2CD275!151&amp;amp;parid=4D48CB3E7E2CD275!147&amp;amp;type=1&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos&amp;amp;authkey=cuAjFAPjR8w%24" style="border-style: none; font-family: 'Segoe UI', helvetica, arial, sans-serif; font-size: 8pt; margin: 0px; outline: none; padding: 0px; text-decoration: none;" target="_blank"&gt;&lt;img alt="View album" border="0" height="76" src="http://lh5.ggpht.com/-SZZWQaEGy7E/TgwBTtzCISI/AAAAAAAAAu0/-Wl8UJiqT60/5762481666BFB8314.png?imgmax=800" style="background-image: none; background: none; border-style: none; border: 0px; margin: 0px; outline: none; padding: 0px; vertical-align: bottom;" title="View album" width="76" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-style: none; height: 76px; margin: 0px; outline: none; padding: 0px 5px 5px 0px; vertical-align: bottom; width: 76px;"&gt;&lt;a border="0" href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=play&amp;amp;resid=4D48CB3E7E2CD275!152&amp;amp;parid=4D48CB3E7E2CD275!147&amp;amp;type=1&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos&amp;amp;authkey=cuAjFAPjR8w%24" style="border-style: none; font-family: 'Segoe UI', helvetica, arial, sans-serif; font-size: 8pt; margin: 0px; outline: none; padding: 0px; text-decoration: none;" target="_blank"&gt;&lt;img alt="View album" border="0" height="76" src="http://lh6.ggpht.com/-y3hT1o_RCW0/TgwBURioCAI/AAAAAAAAAu4/r3-EanPbtQE/91895976719E8D5CD.png?imgmax=800" style="background-image: none; background: none; border-style: none; border: 0px; margin: 0px; outline: none; padding: 0px; vertical-align: bottom;" title="View album" width="76" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-style: none; height: 76px; margin: 0px; outline: none; padding: 0px 5px 5px 0px; vertical-align: bottom; width: 76px;"&gt;&lt;a border="0" href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=play&amp;amp;resid=4D48CB3E7E2CD275!153&amp;amp;parid=4D48CB3E7E2CD275!147&amp;amp;type=1&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos&amp;amp;authkey=cuAjFAPjR8w%24" style="border-style: none; font-family: 'Segoe UI', helvetica, arial, sans-serif; font-size: 8pt; margin: 0px; outline: none; padding: 0px; text-decoration: none;" target="_blank"&gt;&lt;img alt="View album" border="0" height="76" src="http://lh5.ggpht.com/-omwR8KDcwWY/TgwBUjnG_xI/AAAAAAAAAu8/aMtzqIrJjew/-178199560804F7535A.png?imgmax=800" style="background-image: none; background: none; border-style: none; border: 0px; margin: 0px; outline: none; padding: 0px; vertical-align: bottom;" title="View album" width="76" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-style: none; height: 76px; margin: 0px; outline: none; padding: 0px 5px 5px 5px; vertical-align: bottom; width: 76px;"&gt;&lt;a border="0" href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=play&amp;amp;resid=4D48CB3E7E2CD275!154&amp;amp;parid=4D48CB3E7E2CD275!147&amp;amp;type=1&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos&amp;amp;authkey=cuAjFAPjR8w%24" style="border-style: none; font-family: 'Segoe UI', helvetica, arial, sans-serif; font-size: 8pt; margin: 0px; outline: none; padding: 0px; text-decoration: none;" target="_blank"&gt;&lt;img alt="View album" border="0" height="76" src="http://lh3.ggpht.com/-plJWyjdECqs/TgwBVGFeeGI/AAAAAAAAAvA/N-Nn2_EBFFI/-148549849332E4A612.png?imgmax=800" style="background-image: none; background: none; border-style: none; border: 0px; margin: 0px; outline: none; padding: 0px; vertical-align: bottom;" title="View album" width="76" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-style: none; height: 76px; margin: 0px; outline: none; padding: 0px 5px 5px 0px; vertical-align: bottom; width: 76px;"&gt;&lt;a border="0" href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=play&amp;amp;resid=4D48CB3E7E2CD275!155&amp;amp;parid=4D48CB3E7E2CD275!147&amp;amp;type=1&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos&amp;amp;authkey=cuAjFAPjR8w%24" style="border-style: none; font-family: 'Segoe UI', helvetica, arial, sans-serif; font-size: 8pt; margin: 0px; outline: none; padding: 0px; text-decoration: none;" target="_blank"&gt;&lt;img alt="View album" border="0" height="76" src="http://lh3.ggpht.com/-CLI8Pahxjlk/TgwBVmvYn3I/AAAAAAAAAvE/K1qaTfZFFh4/-105011018832E4A612.png?imgmax=800" style="background-image: none; background: none; border-style: none; border: 0px; margin: 0px; outline: none; padding: 0px; vertical-align: bottom;" title="View album" width="76" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-style: none; height: 76px; margin: 0px; outline: none; padding: 0px 5px 5px 0px; vertical-align: bottom; width: 76px;"&gt;&lt;a border="0" href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=play&amp;amp;resid=4D48CB3E7E2CD275!156&amp;amp;parid=4D48CB3E7E2CD275!147&amp;amp;type=1&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos&amp;amp;authkey=cuAjFAPjR8w%24" style="border-style: none; font-family: 'Segoe UI', helvetica, arial, sans-serif; font-size: 8pt; margin: 0px; outline: none; padding: 0px; text-decoration: none;" target="_blank"&gt;&lt;img alt="View album" border="0" height="76" src="http://lh4.ggpht.com/-o5TfGiAlI-A/TgwBWFrzCAI/AAAAAAAAAvI/Z2C5_Pd7Wdk/-131864815260D1F8CA.png?imgmax=800" style="background-image: none; background: none; border-style: none; border: 0px; margin: 0px; outline: none; padding: 0px; vertical-align: bottom;" title="View album" width="76" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-style: none; height: 76px; margin: 0px; outline: none; padding: 0px 5px 5px 0px; vertical-align: bottom; width: 76px;"&gt;&lt;a border="0" href="https://skydrive.live.com/redir.aspx?cid=4d48cb3e7e2cd275&amp;amp;page=play&amp;amp;resid=4D48CB3E7E2CD275!157&amp;amp;parid=4D48CB3E7E2CD275!147&amp;amp;type=1&amp;amp;Bsrc=Photomail&amp;amp;Bpub=SDX.Photos&amp;amp;authkey=cuAjFAPjR8w%24" style="border-style: none; font-family: 'Segoe UI', helvetica, arial, sans-serif; font-size: 8pt; margin: 0px; outline: none; padding: 0px; text-decoration: none;" target="_blank"&gt;&lt;img alt="View album" border="0" height="76" src="http://lh3.ggpht.com/-YDeBukSxbf8/TgwBWTmFGpI/AAAAAAAAAvM/yatILhuZjd0/8493598784BE07657.png?imgmax=800" style="background-image: none; background: none; border-style: none; border: 0px; margin: 0px; outline: none; padding: 0px; vertical-align: bottom;" title="View album" width="76" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-style: none; height: 76px; margin: 0px; outline: none; padding: 0px 5px 5px 0px; vertical-align: bottom; width: 76px;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;This year I am witnessing one of my favourite sportsman’s beginning of the end. He is the man who turned lots of&amp;nbsp; people watching tennis back again. Tennis was dominated by power hitting players like &lt;a href="http://en.wikipedia.org/wiki/Pete_Sampras" target="_blank"&gt;Pete Sampras&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Andre_Agassi" target="_blank"&gt;Andre Agassi&lt;/a&gt; and I think lots of people in 90s started to enjoy women’s tennis than men’s due to this factor(I may be wrong, the perception based on what I have seen and heard during the time from the kind of people around me). &lt;a href="http://en.wikipedia.org/wiki/Steffi_Graf" target="_blank"&gt;Steffi Graf&lt;/a&gt; was rocking the stage more than anybody those days&lt;a href="http://lh3.ggpht.com/-6M17ix--OOU/TgwBWysLU_I/AAAAAAAAAvQ/SG5m0KxXeXg/s1600-h/federer-slice-bh1%25255B3%25255D.jpg"&gt;&lt;img align="right" alt="federer-slice-bh1" border="0" height="140" src="http://lh5.ggpht.com/-Q-4igBNJac4/TgwBXaI3eQI/AAAAAAAAAvU/zvP8wzORHcU/federer-slice-bh1_thumb%25255B1%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: right; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="federer-slice-bh1" width="260" /&gt;&lt;/a&gt;.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://en.wikipedia.org/wiki/Roger_Federer_" target="_blank"&gt;Roger Federer &lt;/a&gt;arrived, in early 2000s, immediately drew the attention by his single backhand slices, which is referred more classical tennis play. He doesn’t show any emotions on the stage, determined and focussed most of the times. He is known for his unforced errors, understandably due to his attacking play maker.&amp;nbsp; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Then this guy &lt;a href="http://en.wikipedia.org/wiki/Rafael_Nadal_" target="_blank"&gt;Rafael Nadal &lt;/a&gt;came, not a graceful act on the stage, but effective, very effective. His never-say-die approach earned him many grand slams. Obviously I am not a big fan of him but I admire his forehand curve in returns. The rivalry started in Tennis. It made Tennis interesting, and since French and English times have mere 8 hours difference, I had to lose my&amp;nbsp; sleep to watch all these rivalries. No regrets though.&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-r1QVJA_5p-I/TgwBX2y3MBI/AAAAAAAAAvY/zJjOl7qnrFw/s1600-h/federer-crying-aust-open-091%25255B4%25255D.jpg"&gt;&lt;img align="right" alt="federer-crying-aust-open-091" border="0" height="247" src="http://lh4.ggpht.com/--YRcKg1yZVw/TgwBYX9u2ZI/AAAAAAAAAvc/tzWqFvKKByI/federer-crying-aust-open-091_thumb%25255B7%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: right; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="federer-crying-aust-open-091" width="151" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div align="justify"&gt;&lt;em&gt;A rare emotional outburst in the field, Australian Open Finals 2009!&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;This year Australian Open was the beginning of end for the magician. Roger lost in the quarter finals and when asked he said wait for six months and then tell its the case. He managed to get into the finals of &lt;a href="http://en.wikipedia.org/wiki/Rolland_Garros" target="_blank"&gt;Rolland Garros&lt;/a&gt;, given some hopes to his fans. But yesterday was a disaster! He lost to &lt;a href="http://en.wikipedia.org/wiki/Tsonga_" target="_blank"&gt;Tsonga &lt;/a&gt;in the Wimbledon 2011 quarter finals, even after winning the first two sets comfortably. He didn’t look convincing, committed or exciting yesterday. I think its a fatigue of playing one too many grand slams and there is no motivation to prove anything to anybody including himself! &lt;/div&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-Sp8QwjJYRuQ/TgwBY2fCLnI/AAAAAAAAAvg/pUX9ZbYDCXM/s1600-h/photo%252520%2525283%252529%25255B15%25255D.jpg"&gt;&lt;img align="left" alt="wimbledon" border="0" height="123" src="http://lh3.ggpht.com/-ypxcjsm30iM/TgwBZaGpNrI/AAAAAAAAAvk/ez8P0DL6XWs/photo%252520%2525283%252529_thumb%25255B27%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: left; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Watching Wimbledon 4th Round, Three matches simulataniously in my laptops and iPad" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="right"&gt;&lt;em&gt;Watching Wimbledon 2011 Live, Fourth round matches in two laptops and iPad!!&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;He is still ranked world number three, it could be still early to write him off, but I am sure his prime is well past, he is hanging on and unless he finds an incentive to play better, I doubt he will ever get back to his usual groove. He knows better than anybody else on when to hang his boots though!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;So there you go, an end of another idol’s power demises!&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Checkout this guy &lt;a href="http://en.wikipedia.org/wiki/Bernard_Tomic" target="_blank"&gt;Tomic&lt;/a&gt;, an eighteen year old Aussie, showed some promises! &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Let’s move on!!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-2235033342203523160?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/2235033342203523160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/06/cruel-thirties.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2235033342203523160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2235033342203523160'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/06/cruel-thirties.html' title='Cruel Thirties!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-Lx_OQNWhzc8/TgwBSry9ObI/AAAAAAAAAuo/VyVr9-UdVo4/s72-c/-100201276779CDC90F.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-3119930222324689952</id><published>2011-06-29T22:00:00.007+10:00</published><updated>2011-06-30T12:05:33.432+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>Migrating …!!!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;So finally it happened, I have migrated! It was a long due, lots of my friends have already migrated or been living here, but I for some reason delayed this until the inevitable move came… Yes I have just moved to Windows!!&lt;a href="http://lh4.ggpht.com/-VRBgFrmiYxQ/TgrpNicLfyI/AAAAAAAAAtA/D2z1XNjUJoM/s1600-h/images%25255B7%25255D.jpg"&gt;&lt;img align="right" alt="images" border="0" height="104" src="http://lh6.ggpht.com/-79b3xba_jCM/TgrpOHmvBVI/AAAAAAAAAtE/a6d9Ir4jajU/images_thumb%25255B5%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: right; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="images" width="88" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-lFKLHJi-zNw/TgrpOcPsy6I/AAAAAAAAAtI/QRYSVspdoB8/s1600-h/opensolarislogo%25255B4%25255D.png"&gt;&lt;img align="left" alt="opensolarislogo" border="0" height="29" src="http://lh6.ggpht.com/-kPU-mJXCZFk/TgrpO9O8ZmI/AAAAAAAAAtM/I4MYx64evVg/opensolarislogo_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: left; margin: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="opensolarislogo" width="107" /&gt;&lt;/a&gt;I had been a Unix user for last 7 years, ever since joined &lt;a href="http://www.hsenidmobile.com/" target="_blank"&gt;hSenid&lt;/a&gt;. I started with Redhat 8(Phyche), then updated to Redhat9(Shrike) before we all moved to Fedora. I was using Fedora until Werewolf, but had trouble with GNOME hanging issue(IDEA had its own issues too) and one of my friends suggested to use Debian so I moved to Ubuntu. From 2008 till last week it was Ubuntu I had been using! There was a period of Mac for about 8 months in between. I had the taste of OpenSolaris during my tenure at Sun too! Yes, I am talking about my laptops' operating systems though it does sound like the number of girl friends people would have over the span of seven years!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-yepilnMYWyI/TgrpPScSG-I/AAAAAAAAAtQ/FUu9bVlyz_o/s1600-h/images%252520%2525281%252529%25255B5%25255D.jpg"&gt;&lt;img align="right" alt="images (1)" border="0" height="101" src="http://lh6.ggpht.com/-Z1MERAUtWB4/TgrpP6JwM0I/AAAAAAAAAtU/b09R5s6EDcM/images%252520%2525281%252529_thumb%25255B3%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: right; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="images (1)" width="84" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;Now I am leaving hSenid after seven years, bought a laptop with Windows 7, so wanted to give it a try. I still installed Ubuntu as a guest in my VMWare workstation.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-6YSUoN7UM0I/TgrpQIpk6UI/AAAAAAAAAtY/-bQeLDaVPTs/s1600-h/images%252520%2525282%252529%25255B4%25255D.jpg"&gt;&lt;img align="left" alt="images (2)" border="0" height="108" src="http://lh4.ggpht.com/-4MJhWz061tM/TgrpQkJbUQI/AAAAAAAAAtc/Y8a7_fXWFAo/images%252520%2525282%252529_thumb%25255B2%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: left; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="images (2)" width="76" /&gt;&lt;/a&gt;But they say(&lt;em&gt;who are they?&lt;/em&gt;), if you migrate to another country, then adapt to the local culture sooner rather than later. So I wanted to setup my environments in windows. I setup IntelliJ Idea, maven etc.. you name it, and started to work. But I still couldn’t adapt to the windows cmd prompt, I am not used to build things from IDE since I fear of IDE dependencies being kept in the built deliverables. So I prefer building and running test cases from command consoles. But windows didn’t help much on this. The saviour was there with the name of &lt;a href="http://www.cygwin.com/" target="_blank"&gt;CYGWIN&lt;/a&gt;. An awesome&amp;nbsp; tool which is giving me Linux like environment. So I don’t miss Ubuntu anymore.&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-RiyGRn2PVHw/TgrpQ1ogU-I/AAAAAAAAAtg/eZ445h9mZuI/s1600-h/windows-7-logo%25255B4%25255D.jpg"&gt;&lt;img align="right" alt="windows-7-logo" border="0" height="95" src="http://lh3.ggpht.com/-FDUwmB_1hNE/TgrpRU-Pv_I/AAAAAAAAAtk/3P2BEtvZ78c/windows-7-logo_thumb%25255B2%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: right; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="windows-7-logo" width="101" /&gt;&lt;/a&gt;&lt;br /&gt;Ok do I love windows? I am bit nervy to say yes, it could be an infatuation .. but Windows still rock. One of the immediate attraction is &lt;a href="http://explore.live.com/windows-live-writer?os=other" target="_blank"&gt;Windows Live Writer&lt;/a&gt;. An incredible writer to write your blogs, you don’t have to go to web front, do it here, which is like writing something on MS Word.&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;There are many attractions!!! … Would love to write more, bottom line is, let’s not get anything written off easily … Windows is as good as any other operating systems .. But still its my early days &lt;img alt="Winking smile" class="wlEmoticon wlEmoticon-winkingsmile" src="http://lh5.ggpht.com/-ZhO9fqDJZLk/TgrpRx9DQTI/AAAAAAAAAto/zgvwmmsQD3U/wlEmoticon-winkingsmile%25255B2%25255D.png?imgmax=800" style="border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-3119930222324689952?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/3119930222324689952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/06/migrating.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3119930222324689952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3119930222324689952'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/06/migrating.html' title='Migrating …!!!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-79b3xba_jCM/TgrpOHmvBVI/AAAAAAAAAtE/a6d9Ir4jajU/s72-c/images_thumb%25255B5%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-2158077547613596857</id><published>2011-06-29T13:28:00.001+10:00</published><updated>2011-06-29T15:17:36.567+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='bpel'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Time To Make Business Processing Easier : Part 2 : BPEL4JSON</title><content type='html'>In &lt;a href="http://jk-blogging.blogspot.com/2011/06/time-to-make-business-processing-easier.html"&gt;my previous post&lt;/a&gt; in this topic, I discussed how important it is to introduce a &lt;a href="http://en.wikipedia.org/wiki/Domain-specific_language" target="_blank"&gt;DSL&lt;/a&gt; based orchestration engine since the BPM is often done by the businesses but not techies. &lt;a href="http://cacm.acm.org/magazines/2011/7/109910-dsl-for-the-uninitiated/fulltext" target="_blank"&gt;This cacm post&lt;/a&gt; talks about why DSL is an essential to fill this gap between business and IT. &lt;br /&gt;&lt;br /&gt;Now lets glance the solution we tried to get a BPEL like DSL yet simple but not limited to WS. It was &lt;a href="http://www.blogger.com/www.hsenidmobile.com" target="_blank"&gt;hSenid&lt;/a&gt;’s research project with the code name “hubby” and later used in our commercial BPM frameworks too.&lt;br /&gt;&lt;br /&gt;Let me start with a simple example. Its typical Telco domain system, where we send SMS messages from a &lt;a href="http://en.wikipedia.org/wiki/Value-added_service" target="_blank"&gt;Value Added Services&lt;/a&gt;(VAS) provider to a network entity &lt;a href="http://en.wikipedia.org/wiki/Short_message_service_center" target="_blank"&gt;SMSC&lt;/a&gt;. This message flow is simple, where you receive a message, charge it and then send to SMSC. But the way you charge, the validation you do upfront and the routing based on the message properties may vary from domain to domain.&amp;nbsp; Hence its something we will have to decide upfront based on domain. Not a typical BPM use case, but it has the nuances of it!&lt;br /&gt;So let’s create a sms-service. This is a very simple BPM flow defining the corresponding services which are to be executed in order(sequence/parallel). The services names are given. The services can be from simple REST URL to JNDI/Registry based any ESB like services.&lt;br /&gt;&lt;div class="csharpcode-wrapper" id="codeSnippetWrapper"&gt;&lt;/div&gt;&lt;div id="codeSnippetWrapper" style="background-color: #f4f4f4; border-bottom: silver 1px solid; border-left: silver 1px solid; border-right: silver 1px solid; border-top: silver 1px solid; cursor: text; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; height: 187px; line-height: 12pt; margin: 20px 0px 10px; max-height: 500px; overflow: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 97.4%;"&gt;&lt;div id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; height: 162px; line-height: 12pt; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100.14%;"&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &lt;span style="color: #006080;"&gt;"name"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"sms-service"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #006080;"&gt;"service"&lt;/span&gt;: {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color: #006080;"&gt;"sequence"&lt;/span&gt;: [&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"invoke"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"number-checking"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"invoke"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"reserve-credit"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"invoke"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"send-sms"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"invoke"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"confirm-credit"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     ]&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; height: 16px; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 97.91%;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Now lets try to expand this little more.&lt;br /&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper" style="background-color: #f4f4f4; border-bottom: silver 1px solid; border-left: silver 1px solid; border-right: silver 1px solid; border-top: silver 1px solid; cursor: text; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; height: 587px; line-height: 12pt; margin: 20px 0px 10px; max-height: 800px; overflow: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 97.5%;"&gt;&lt;br /&gt;&lt;div id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #006080;"&gt;"service"&lt;/span&gt;: {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;     &lt;span style="color: #006080;"&gt;"conditions"&lt;/span&gt;: [&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;       {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"when"&lt;/span&gt;: {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;           &lt;span style="color: #006080;"&gt;"field"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"remote-host"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;           &lt;span style="color: #006080;"&gt;"REGEX"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"(172.16.9.25)|(172.16.9.26)|(172.16.0.126)|"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         },&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"error-code"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"ERR_HNV_600"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"error-desc"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"Hostname Validation Failed"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;       },&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;       {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"when"&lt;/span&gt;: {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;           &lt;span style="color: #006080;"&gt;"AND"&lt;/span&gt;: [&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;             {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"field"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"userid"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"IN"&lt;/span&gt;: [&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;                 &lt;span style="color: #006080;"&gt;"jakesully"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;               ]&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;             },&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;             {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"field"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"password"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"IN"&lt;/span&gt;: [&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;                 &lt;span style="color: #006080;"&gt;"$1$21/JGwNC$2IuT1QBC673gtfAftN.wK1"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;               ]&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;             }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;           ]&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;         },&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"error-code"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"ERR_AUT_600"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"error-desc"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"Authentication Failed"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;       }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;     ],&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;     &lt;span style="color: #006080;"&gt;"serviceParameters"&lt;/span&gt;: [&lt;span style="color: #006080;"&gt;"userid"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"password"&lt;/span&gt;,&lt;span style="color: #006080;"&gt;"remote-host"&lt;/span&gt;]&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;   }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Here we add some validations to a particular request, like authentication and host authorisation. So when you create the BPM SLAs, you can add the validators in an orderly manner. There are many logical constructs like this to achieve most of the BPM work flows. &lt;br /&gt;&lt;br /&gt;So what are the advantages of this model?&lt;br /&gt;&lt;br /&gt;1) This is pure JSON, so any JSON parser will be able to read this. No XML headaches, imagine if we are to write these conditional business logics into XML, how would it be looked like?&lt;br /&gt;&lt;br /&gt;2) The services which are invoked not WS specific ones. They can be any bound services through service registry. All they accept are services calls and set of parameters. Yes, &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank"&gt;REST&lt;/a&gt; like services but they don’t have to be HTTP.&amp;nbsp; Meantime, it does support dynamic REST calls too.&lt;br /&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper" style="background-color: #f4f4f4; border-bottom: silver 1px solid; border-left: silver 1px solid; border-right: silver 1px solid; border-top: silver 1px solid; cursor: text; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; height: 158px; line-height: 12pt; margin: 20px 0px 10px; max-height: 500px; overflow: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 97.5%;"&gt;&lt;br /&gt;&lt;div id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #006080;"&gt;"invoke"&lt;/span&gt;: {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;     &lt;span style="color: #006080;"&gt;"uri:http://127.0.0.1:8080/jakeserver/audit/"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #006080;"&gt;"serviceParameters"&lt;/span&gt;: {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"userid"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"empty"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"password"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"empty"&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"remote-host"&lt;/span&gt;: &lt;span style="color: #006080;"&gt;"empty"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;      }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;Here you don’t need an audit service to be in the service registry, you can dynamically define it while creating the BPM. A beauty of REST. &lt;br /&gt;3) The idea is to send the BPM process over the wire. Sometimes you define a portion of BPM with the conditional logics, but you need some external service to execute it. For example, data protection laws are very strict in some countries,&amp;nbsp; so while be able to keep the BPM layer in cloud, we still have to execute some of the sensitive services under the country’s network, in such cases you can send the JSON object over the wire.&lt;br /&gt;&lt;br /&gt;This is it! I didn’t try to explain each and every construct of the solution here, since its a domain specific one, I don’t expect it to be used as it is everywhere. But what I feel is, we need a model like this to create our business services, and especially the SLA’s.&lt;br /&gt;&lt;br /&gt;We have done it in our project and how successful are we?&lt;br /&gt;&lt;br /&gt;It Just Works!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-2158077547613596857?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/2158077547613596857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/06/time-to-make-business-processing-easier_29.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2158077547613596857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2158077547613596857'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/06/time-to-make-business-processing-easier_29.html' title='Time To Make Business Processing Easier : Part 2 : BPEL4JSON'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-17318062176004142</id><published>2011-06-26T11:54:00.004+10:00</published><updated>2011-06-30T17:44:02.614+10:00</updated><title type='text'>I Am A War Victim!</title><content type='html'>&lt;div style="text-align: justify;"&gt;June 5th, 2011, I was on my way back from Sri Lanka to Singapore. I especially requested for front row seat, only to alight early so won’t miss any action of the final of Rolland Garros that day between Federer and Nadal. Soon after I cleared the immigration, I checked the score, Federer was leading, having just broken Nadal’s serve. I was so excited, called my brother-in-law and checked whether is he watching the match? He said he&amp;nbsp;isn't, neither subscribed to the channel this year. Disappointed, but fortunately he too was interested in this rivalry, so immediately subscribed to the channel. Subscribing to a channel in Starhub TV is as easy as finding a girl friend. You just have to chose the channel and press yes, everything through remote control. Yes just like that and you will get the bill end of the month!!!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So the match went on, Federer eventually lost the first set, and as expected, it was yet another loss to Nadal. Federer can’t play against Nadal in clay, any&amp;nbsp;Spaniards&amp;nbsp;for that matter. You don’t have to be a Nadal to win Federer, but just learn a bit Spanish accent, talk to him just before the match, he won’t stop laughing for next few hours, you can even win a game with dodgy serves! If you don’t believe me, watch these two videos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:494bbb5c-1733-492e-b6cc-6366484fdffb" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div id="2dfda6c4-a0df-4fbb-b00b-2471230c3832" style="display: inline; margin: 0px; padding: 0px;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=94xyOpETYYs" target="_new"&gt;&lt;img alt="" galleryimg="no" onload="var downlevelDiv = document.getElementById('2dfda6c4-a0df-4fbb-b00b-2471230c3832'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/94xyOpETYYs?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/94xyOpETYYs?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" src="http://lh5.ggpht.com/-0d6pq1dpM9c/TgaRS01DaZI/AAAAAAAAAsI/jT9kcZodSiw/video91b1bb95c8f7%25255B31%25255D.jpg?imgmax=800" style="border-style: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="clear: both; font-size: .8em; width: 448px;"&gt;The moment he hearing the Nadal’s accent, he couldn’t stop laughing afterwards!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:aa9490b3-5562-4d29-a108-a3cedaa7793d" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div id="3059df7b-142d-4c0e-ba7a-c6110abbd751" style="display: inline; margin: 0px; padding: 0px;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=IM_dOoUXgLE&amp;amp;feature=related" target="_new"&gt;&lt;img alt="" galleryimg="no" onload="var downlevelDiv = document.getElementById('3059df7b-142d-4c0e-ba7a-c6110abbd751'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/IM_dOoUXgLE?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/IM_dOoUXgLE?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" src="http://lh4.ggpht.com/-bO0qLH6raqU/TgaRTWHI9pI/AAAAAAAAAsM/qKKszQWbnpQ/videof0ddf152458b%25255B30%25255D.jpg?imgmax=800" style="border-style: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="clear: both; font-size: .8em; width: 448px;"&gt;Its even worse!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now the Rolland Garros is over, I was personally happy with the way Federer played there. His back hand cross court slices came back to live, and the number of unforced errors dropped. So I was(am) confident that he will become better in much &amp;nbsp;faster grass Wimbledon court, which was due in two weeks.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Singapore cable TV operators look&lt;strong&gt;ed&lt;/strong&gt; so awesome! Starthub TV has two dedicated channels(205 and 207) for racquet games named “Racquet Channel”. I was cursing bother Australian and Sri Lankan cable operators for not providing such cheaper priced channels so we can afford to watch Tennis like this. Its all going really well so far!&lt;/div&gt;&lt;br /&gt;Queens Tournament, which is considered a warm-up before the Wimbledon, started. Though Federer opted out, Nadal lost to Tsonga, enough for me to get my adrenalin pumping. Yes Federer is going to do it again! I&amp;nbsp;didn't&amp;nbsp;still know what was coming ….!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Wimbledon qualifiers started. The Racquet channels were telecasting some badminton tournaments and repeat telecast of Rolland Garros. I was still ok since I missed most of the clay actions when I was in Sri Lanka. I thought they didn’t telecast the qualifiers. Fair enough.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Round one started, I skipped my exercise session to watch the Nadal’s game, the Starhub TV was still showing repeat telecasts and some boring badminton Singles. I was little curious. I asked my in-law, he was clueless too. The fact that we subscribed to Racquet channel in June, only to watch the final of Rolland Garros and then the Wimbledon. But Wimbledon is not being telecasted in Starhub TV.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;So we called the operator and checked, they said, Starhub didn’t get the Wimbledon rights this time but only Rolland Garros. What the hell? The Cable TV which has two dedicated channels for Racquet games couldn’t secure the most important racquet tournament. And the rights have gone to Mio TV, another competitor cable operator in Singapore owned by Singtel. &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;So what does it mean? You now need to have two cables, two operator devices and pay twice the rental to watch Tennis tournaments. The same story has been&amp;nbsp;happening&amp;nbsp;for other sports like cricket, where cricket world cup was in Mio TV and IPL is in Starhub TV. It wasn’t the same situation two years back, now they regulated to have fair for all ground and we are now in this situation! They can’t be kidding, can they?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now what is to do with this post’s title? How I became the war victim? They say(&lt;em&gt;who are they btw&lt;/em&gt;), war is fought in this world as a part of the agenda of arms dealers. They sponsor the war, sell weapons to both the &amp;nbsp;warring parties and let them fight. It’s the people who are victimised end of the day. So what’s the relevance?&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Starhub’s and Singtel’s, who secured the Rolland Garros and Wimbledon rights respectively, majority of the shares are held by the same company Temasek!!! Now if you are a diehard tennis fan, you got to subscribe for both the cables and eventually paying to this farce play!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;So what do I do now? Subscribing to both? Cmon, when there is a war, you either fall for the farce or you flee from the scene!!! I obviously do the later! So I am watching matches live in this following cool link!!!&lt;br /&gt;&lt;a href="http://www.lshunter.tv/"&gt;http://www.lshunter.tv&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;He he he he!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-17318062176004142?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/17318062176004142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/06/i-am-war-victim.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/17318062176004142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/17318062176004142'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/06/i-am-war-victim.html' title='I Am A War Victim!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-0d6pq1dpM9c/TgaRS01DaZI/AAAAAAAAAsI/jT9kcZodSiw/s72-c/video91b1bb95c8f7%25255B31%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Singapore</georss:featurename><georss:point>1.352083 103.81983600000001</georss:point><georss:box>1.213633 103.573908 1.4905329999999999 104.06576400000002</georss:box></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-5650793042164555356</id><published>2011-06-11T13:55:00.001+10:00</published><updated>2011-06-11T14:08:05.423+10:00</updated><title type='text'>Being Non Committed and Sticking with the plan</title><content type='html'>Steve Jobs yet again shows a great presence of mind in this presentation. He came with a plan, presented it and got what he wanted. Nothing less nothing more, no matter how you trouble him in the questionnaire, he just played some delicate slices!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/gtuz5OmOh_M/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gtuz5OmOh_M&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/gtuz5OmOh_M&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;A lady asked on the benefits the residents getting by approving this building?&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;i&gt;Ruthless Jobs answered, well if its not here, then we will move to Mountain View, and Cupertino gonna lose the highest tax payer!!!&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;Why not Apple giving away free Wi-Fi to residents as a way back to give something to community?&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;i&gt;Another straight hit back from Jobs. If council can cut the taxes, then Apple can think about it! &lt;/i&gt;&lt;/div&gt;&lt;br /&gt;Why aren't there any Apple Stores in Cupertino?&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;i&gt;Straightforward answer, Apple doesn't believe it would succeed.&amp;nbsp;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;How would you make it successful?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Totally irritated Jobs, heads down and told nothing. But expression was like &lt;span style="color: blue;"&gt;"None of your business maite"&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Remember he came to get something from the council, and council members tried to fish whatever they could get from him. They got nothing and yet he did impress and convince all of them.&lt;br /&gt;&lt;br /&gt;That's the way to be non committal ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-5650793042164555356?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/5650793042164555356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/06/being-non-committed-and-sticking-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/5650793042164555356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/5650793042164555356'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/06/being-non-committed-and-sticking-with.html' title='Being Non Committed and Sticking with the plan'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-9092585243434468241</id><published>2011-06-10T13:20:00.012+10:00</published><updated>2011-06-10T14:18:17.493+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hsenid'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><category scheme='http://www.blogger.com/atom/ns#' term='web service'/><category scheme='http://www.blogger.com/atom/ns#' term='bpel'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='EIP'/><title type='text'>Time to make business processing easier : Part 1</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote style="background-color: #cfe2f3;"&gt;&lt;i&gt;My first shot at &lt;a href="http://en.wikipedia.org/wiki/Business_Process_Execution_Language"&gt;BPEL&lt;/a&gt; was back in year 2003 where I was one of the presenters of &lt;a href="http://axis.apache.org/axis"&gt;Axis&lt;/a&gt; at ICT Conference, Colombo. I recall, we were talking about the practical use cases of &lt;a href="http://en.wikipedia.org/wiki/Web_service"&gt;WS&lt;/a&gt; and how its being used along BPEL. I was reading about the B2B system designs&amp;nbsp; and how services and the orchestrations can be performed by business analysts using BPEL. It was interesting and fancy, but I admit, it was too early for me to understand the constraints of applying it in industry. It was more of an unconvincing talk about BPEL by then due to my lack of practical experiences on how businesses work!&lt;/i&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;BPEL in my view is there to enable&amp;nbsp; BPM to design and create business processes using the existing services both internally and externally. BPEL provides the common universally accepted standard so that the services can be scattered throughout the globe, offered by various enterprises, so the aspects of governance, security and choreographic formats have all become mutually consented by the businesses. BPEL is a standard of &lt;a href="http://en.wikipedia.org/wiki/OASIS_%28organization%29"&gt;OASIS&lt;/a&gt; and ironically the only option considered by many to perform &lt;a href="http://en.wikipedia.org/wiki/Business_process_management"&gt;BPM&lt;/a&gt;. As a result, most of the Small and Medium Enterprise(SME)s fall to this trap of using BPEL for the BPM, even though their business and technical domains are just limited to particular enterprise domains where a much wider OASIS accepted standard is not so important. This elephant now sits right there in the middle of these enterprises (Am I to say doing nothing?)&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;i&gt;Time changed, I joined &lt;a href="http://hsenid.com/"&gt;hSenid&lt;/a&gt;, started working on cusomter projects and over the time I had the opportunity to study the RFPs and designing systems with customers. Eventually I found a pattern on how some of them prepare their RFPs. All the middle ware related RFPs have started to include SOA, ESB and BPEL conformance. When asking the rationale of these requirements, people often fall short of giving convincing answers. Although the RFPs are on distributed systems with some level service orchestrations expected, they are still static by nature and rarely any sort of BPM related activities would be required. So I usually ask a question whether their business architects intend to design the services using BPEL? Are you guys in a position to design the orchestrations and how often you would want to do? The answer is usually a confusing NO.&amp;nbsp;&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So its evident that the SMEs are looking for static BPMs which are already predefined. They are nowhere in a position to design&amp;nbsp; something using BPM and BPEL. They would always want the vendor to come and do the orchestration and highly unlikely they could generate a BPM by their own without involving a vendor participation. So at best, what they require is a SOA environment but they confuse with SOA and BPEL. They read a lot on them and then try to put those buzz words in the RFPs without exactly realizing what do they want. And by nature, people have the tendency to come up with a solution before consolidating the problems, and put forward the solution as the Requirements in RFP.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;&lt;i&gt;&lt;span style="background-color: #cfe2f3;"&gt;I had this draft post yesterday and showed this to one of my good friends who involves in preparing such RFPs, asked her view points of these. She did indeed agree my point, and admitted lack of consultant' s or a business architect's involvement in preparing RFPs is contributing to these sort of flaws. People of junior scales tend to look more matured and smart when preparing RFPs, hence the RFPs have become so demanding and often over asking the requirements. Vendors too take advantage of this, avoid clarifying the details, dance to what customers ask but eventually deliver something lesser of what is specified in the RFP. User Acceptance can be easily got through due to the absence of testing environment and practical use cases. This is where you need a vendor whom you can trust, who would ask you some blunt questions in order to get the exact requirements right. I have witnessed a big SOA project, awarded to a low quoted vendor who didn't have much of a customer domain experience, project was kicked off&amp;nbsp; and had to be called of after two years. Yes, you read it right, it was two years and then the customer realized the mistake and awarded it to the correct vendor later. I don't need to say who is the vendor&amp;nbsp; and how successful is the project now, do I?&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The problem is on the confusions between BPM and BPEL. Lots of people think both are same or one can't exist without the other. Most of the businesses need BPM to design their processes and to execute they need a BPEL like standard and an engine. Subject to the scale and the diversity of an enterprise's businesses, BPM can simply live without BPEL, and&amp;nbsp; yet making use of the existing services of their enterprises as they are,&amp;nbsp; without&amp;nbsp; the need to migrate them into WS. Now the obvious question is, why is this BPEL an evil for SMEs?&amp;nbsp; This &lt;a href="http://www.infoq.com/articles/bpelbpm"&gt;InfoQ article&lt;/a&gt; and &lt;a href="http://www.bpm.com/bpel-who-needs-it.html"&gt;BPM article&lt;/a&gt; talk about the pros and cons of using BPEL and why shouldn't we use this for all the BPM jobs. In a nutshell I feel, the complexity of BPEL is its weakness. Subjective but I still believe that developing a homegrown BPM supporting engine is more wiser, simpler and efficient than adapting to a common standard of BPEL like specifications (if you are not Amazon, ebay or US Army like enterprises of-course).&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="background-color: #cfe2f3;"&gt;&lt;i&gt;During my EA higher studies, I chose to &lt;a href="http://www.doc.ic.ac.uk/ltsa/bpel4ws/"&gt;study and review&lt;/a&gt; the &lt;a href="http://www.doc.ic.ac.uk/ltsa/bpel4ws/"&gt;LTSA WS-Engineer&lt;/a&gt; research. The research was about simulating BPM and the model based service creation, validation and testing. It was very automated and a good enabler for BPM validation. In this review I critically questioned the approach of tying up BPM with BPEL. I wanted the graphical orchestration tools to support services not just over WS but the others too. You don't really have to expose your services using WS within your enterprise. You can find my review paper in this &lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B8HZWTy5LX4QNTRkNDljMDEtYmY4NC00ZDMxLWEzZDktYmVlOWU5MTU0ZDlh&amp;amp;hl=en_US"&gt;link&lt;/a&gt;!&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Let's take on the two most design goals(limitations for me) of the BPEL(source: Wikipedia) &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;1) Define business processes that interact with external entities through &lt;a href="http://en.wikipedia.org/wiki/Web_service" title="Web service"&gt;web service&lt;/a&gt; operations defined using &lt;a href="http://en.wikipedia.org/wiki/Web_Services_Description_Language" title="Web Services Description Language"&gt;WSDL&lt;/a&gt;  1.1, and that manifest themselves as Web services defined using WSDL  1.1. The interactions are “abstract” in the sense that the dependence is  on portType definitions, not on port definitions.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Why are we limiting ourselves into WS standard alone? We needed a universal contractual semantics and our answer for this &lt;i&gt;was&lt;/i&gt; WS! The world has moved on from this strictly conformed contractually specified notations now! XML is slowly becoming a legacy and the complexity of WS is keeping companies hiding under the table(The scale here is SMEs though). The bottom line question is, we invent something for business, business people to use it, but it turned out to be utterly complex and confusing. And before a business analyst even tries to understand what a "ComplexType" in WSDL meant, I am sure he or she will forget his business idea!! &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;Define business processes using an XML-based language. Do not define a  graphical representation of processes or provide any particular design  methodology for processes.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Again XML!! This is like a country like India still using the British law on&amp;nbsp; funny &lt;a href="http://www.vakilno1.com/bareacts/indianpenalcode/s377.htm"&gt;"Unnatural offenses"&lt;/a&gt; when the Britain itself scrapped the law since it doesn't make sense anymore. Here the goal doesn't recommend the graphical representation of the process, on the other hand I feel this should actually propose a graphical tool to represent the BPEL underlaying .. This is meant to be for businesses right ..&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So when you have such constraints, you get scared. I know lots of enterprise architects design SOA model for enterprises and make all the services available through WS in order to make BPEL working. They propose millions of dollar EA projects to do it, show the value propositions nicely in power-point presentations. Because BPEL is very very sexy to show off to CXOs, I don't deny it, but its not yet our next door boy or girl but just a celebrity star only.&amp;nbsp; Its far too complex and making each and every service of the domain in order to get the BPEL worksing is costly and far from being practical too. One wouldn't opt to cast &lt;a href="http://en.wikipedia.org/wiki/Arnold_Schwarzenegger"&gt;Arnold&lt;/a&gt; for &lt;a href="http://en.wikipedia.org/wiki/When_Harry_Met_Sally..."&gt;"Harry Met Sally"&lt;/a&gt;, would ya?.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So I want a very simplified way to execute the processes created by BPM.&amp;nbsp; Something which is simple and expandable so the individual domain can make their own homegrown BPM execution layer. We design something with only knowing the list of services available and the inputs, let the services to be WS,&amp;nbsp; REST, Java, .NET, JMX, CORBA ..name it .. Business analysts don't care. All they want are the services to create their business cases. We do not try to do a wholesale changes in our existing "AS IS" system, but to expose it to be used by the BPM. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;&lt;div style="background-color: #cfe2f3;"&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; text-align: justify;"&gt;&lt;i&gt;So do we have &lt;/i&gt;&lt;b&gt;the&lt;/b&gt;&lt;i&gt; solution? of-course No, there is nothing called &lt;/i&gt;&lt;b&gt;The&lt;/b&gt; &lt;i&gt;Solution for any problems. But we have&lt;/i&gt; &lt;b&gt;a&lt;/b&gt;&lt;i&gt; solution, very subjective to the domains, scale of the domains and the requirements, but feel we can use it big time. It has the potential to fly high for its simplicity or perhaps it has the potential to flop if someone doesn't promote it to next level ...&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Let's see what it is in tomorrow's post... Stay Tuned!!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-9092585243434468241?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jk-blogging.blogspot.com/2011/06/time-to-make-business-processing-easier.html' title='Time to make business processing easier : Part 1'/><link rel='enclosure' type='text/html' href='http://jk-blogging.blogspot.com/2011/06/time-to-make-business-processing-easier.html' length='0'/><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/9092585243434468241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/06/time-to-make-business-processing-easier.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/9092585243434468241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/9092585243434468241'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/06/time-to-make-business-processing-easier.html' title='Time to make business processing easier : Part 1'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-5422513786096610926</id><published>2011-06-07T22:19:00.003+10:00</published><updated>2011-06-07T22:50:45.868+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='antlr'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Properties DSL</title><content type='html'>&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Problem Description&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;Managing the configurable properties of a system is one of the headaches&amp;nbsp; during the development, testing and production phases of a product. Typically we use following similar property configurations in our system ...&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;div style="background-color: #cfe2f3;"&gt;#IP Address of the Dump Server&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;#For Testbed Use 172.16.15.162&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;server.ip=172.16.15.161&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;Now this might look perfect, especially for the developers. Since very rarely developers worry too much on the situation at production. It might be fine for a support engineer too. Because support engineers have become stereotypical to just go through the routine configuration changes. And on-site pros know that after few years this property setting would start looking like this.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="background-color: #d0e0e3;"&gt;#IP Address of the Dump Server&lt;br /&gt;#server.ip=172.16.15.162&lt;br /&gt;#server.ip=192.168.0.1&lt;br /&gt;#server.ip=172.25.15.156&lt;br /&gt;#server.ip=dumb.com&lt;br /&gt;server.ip=172.16.15.161&lt;/blockquote&gt;&lt;br /&gt;So its obvious that after sometimes the property will become messy.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;So what are the core issues?&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;1) The same property file is copied and then properties are commented when being changed from environment to environment. &lt;br /&gt;&lt;br /&gt;2) The approach is error prone. When switching between testbed mode to production or even to development, one will have to go through the changes again. And imagine if there are 50 properties, its 50 times of changes. &lt;br /&gt;&lt;br /&gt;3) No validations enforced like we do in a web form. Remember we have higher chance of getting a typo error in a console level configuration than in a web interface.&lt;br /&gt;&lt;br /&gt;4) Its nice to have the type of the property specified. So the property can have the semantic validation before its being used.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;strike&gt;The&lt;/strike&gt; Solution&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;br /&gt;&lt;/div&gt;So we thought of introducing a DSL(Domain Specific Language) for property files. The other option of using XML was simply turned down due to the obvious reasons. Its a simple representation but yet effective...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="background-color: #cfe2f3;"&gt;server.ip={ description="Remote Dumb Server IP Address";&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;type="string";&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;units="Not Applicable"; &lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;possibleValues="[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}";&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;values=[&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default="127.0.0.1",&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; test="192.168.0.2",&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dev="127.0.0.1" ,&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; production="203.16.22.22"&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ] ;&lt;/div&gt;&lt;div style="background-color: #cfe2f3;"&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;All these configurations are optional, so you can skip them if you don't require. For example "type" and "units" are optional fields and may not be useful for your context. But I strongly recommend the possibleValues( RegEx for validation), values and description.&lt;br /&gt;&lt;br /&gt;So with this setting, you just have to keep a global "environment" property and use test/dev/production when you switch in between. You can use the same property file everywhere without changing the values in it, so the margin of manual errors come down drastically!&lt;br /&gt;&lt;br /&gt;Now how this has been read and used in the system? Its simple! you will have to use a DSL parser where in our case we used &lt;a href="http://www.antlr.org/"&gt;ANTLR&lt;/a&gt;. May be in another blog I will write about it, I don't wanna put the &lt;a href="http://www.antlr.org/"&gt;ANTLR&lt;/a&gt; grammar here as I don't want people to just use it!!! Anyway here is a good reference which you can think of relating it to what I have written out here!&lt;br /&gt;&lt;br /&gt;Reference :&lt;a href="http://www.antlr.org/wiki/display/ANTLR3/Fig+-+Generic+configuration+language+interpreter"&gt;a) Fig : Generic configuration language interpreter&lt;/a&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href="http://www.antlr.org/"&gt;b) ANTLr&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Note : This post was written sometime back and in my drafts for a while! Now I look back and ask myself that would I be doing the same thing now. The answer is yes, but instead of using ANTLR, I would be conforming this to &lt;a href="http://www.json.org/"&gt;JSON&lt;/a&gt; so that the property file can be usable more widely.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;So the idea remains, but not the technology!!!&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-5422513786096610926?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/5422513786096610926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/06/properties-dsl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/5422513786096610926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/5422513786096610926'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/06/properties-dsl.html' title='Properties DSL'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-545208964170230022</id><published>2011-04-06T15:19:00.008+10:00</published><updated>2011-06-06T18:33:13.178+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='j2ee'/><category scheme='http://www.blogger.com/atom/ns#' term='domain driven design'/><title type='text'>Design is a carving, not a moulding!</title><content type='html'>It was the year 2005, my supervisor asked me to look at the new framework called &lt;a href="http://www.springsource.org/"&gt;Spring&lt;/a&gt; and read one of Rod Johnson's articles on Dependency Injection. Later I did a presentation on Spring to our senior technical team. It was still early days of Spring, we were using some 1.X version of it, purely for its IOC model as an integration framework.&lt;br /&gt;&lt;br /&gt;Since after, I've become kind of an advocate of Spring, was pretty much developing everything using Spring. Even to write a simple Java application, I would create a spring module in those days. I went on to write &lt;a href="http://jk-blogging.blogspot.com/search/label/spring"&gt;number of blogs on Spring&lt;/a&gt;. And &lt;a href="http://jk-blogging.blogspot.com/2007/09/spring-and-my-nephew.html"&gt;this blog&lt;/a&gt; received several number of hits during the time...!&lt;br /&gt;&lt;br /&gt;Spring was all over the places in our projects afterwards. It was like hanging out with a new date. We used it in everything, every project, one too many.&amp;nbsp; For the first project, we used it purely to wire the beans and properties (call it DI)! We simply kept the property keys as variables and wired the values through context XML. Yes, it was a pathetic idea but that's how it was!&lt;br /&gt;&lt;br /&gt;That was the time Spring was penetrating the Java based applications immensely so was ours too (people were getting fed up with Application Servers and J2EE, especially EJB),&amp;nbsp; we pretty much perfected in Spring and its usages. We didn't bother its utility modules' memory leaks. We didn't worry too much on the number of XML files. We didn't question the amount of development happening in the XML but not inside the code itself. Nobody asked why we wire beans unnecessarily. We were just happy. Even if asked, we had the ready made answer of Flexibility and Maintainability. When an architect applies his theories this much, why would one question it anyway? So we just did it. Our supervisors did it, we did it, and our subordinates did it!&lt;br /&gt;&lt;br /&gt;Year 2008, Dr &lt;a href="http://goanna.cs.rmit.edu.au/%7Egeorge/"&gt;George Fernandez&lt;/a&gt;, the lecturer of "Distributed Systems" module at my EA studies told something which hit my head so strong. Sometimes back I put a Google Buzz status inspired from a discussion with him.&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;i&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;Start  a design with single threaded, single instance, single DU, non  transactional, non persistent and synchronous component. Then start adding your  constraints and limitations to the design(mostly NFR), the design will  gradually expand and stop at a place where it meets all your  requirements. Make sure defining the re-usability as a constraint of  your system and make it measurable.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;Its like how you carve a stone into a sculpture. But the method is to start it with a simple stone but not with a sculpture, so that you can end up making the exact sculpture you intended to. Yes you still have to apply the patterns and methodologies in order to get to the sculpture in the right way. But the approach is better off with this.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;So what's wrong with Spring? Nothing .. Spring was/is a near perfect integration framework still. But its the people who use it, abuse the beauty of the model. First of all, never design a system with having Spring in mind or any technology in that matter. Spring is a framework but your design should be domain specific. When you start doing it, you will realize that Spring is not the only model... there are&amp;nbsp; frameworks like Netty or even a simple &lt;a href="http://wrapper.tanukisoftware.com/doc/english/download.jsp"&gt;JSW&lt;/a&gt; module would sometimes be good enough for your requirements.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;Anyway for some extent you may experiment things by going beyond what is expected from the proposed system. But that should go under the R&amp;amp;D effort and should not be considered under the customer project. So its understandable to have an over designed prototype, but not the customer deliverable product.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;&lt;br /&gt;The bottom line is, design it first with keeping only domain in the mind.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;And more importantly once you thought was the best solution for a problem would sooner become the worst and most importantly both the thoughts can be wrong still!!!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;i&gt;&lt;span class="body"&gt;"Architecture is inhabited sculpture&lt;/span&gt;" --&lt;a href="http://www.brainyquote.com/quotes/quotes/c/constantin316090.html"&gt;Constantin&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;&lt;span class="z19Dle" id="col-z12aiprbtqzixr3jz04cdl1xakyxuhuyks40k"&gt;&lt;span class="zo"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-545208964170230022?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/545208964170230022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/04/design-is-carving-not-moulding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/545208964170230022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/545208964170230022'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/04/design-is-carving-not-moulding.html' title='Design is a carving, not a moulding!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-5930830433697922421</id><published>2011-03-04T03:40:00.005+11:00</published><updated>2011-03-05T15:09:07.013+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='short story'/><title type='text'>The Girl Is Mine!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-fxjOZPPDpAs/TW_D2OUEXdI/AAAAAAAAApc/_MCXQJTfdfA/s1600/Girl-Sleeping.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="https://lh4.googleusercontent.com/-fxjOZPPDpAs/TW_D2OUEXdI/AAAAAAAAApc/_MCXQJTfdfA/s200/Girl-Sleeping.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b style="font-family: inherit;"&gt;&lt;span style="color: purple;"&gt;"Good Morning Jessie, past six already, Coffee Time, get up, get up" &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Good Morninggggg Jake"&lt;/span&gt;&lt;/b&gt; , Jessie mums with a deep yawn without opening her eyes, stretches her hands, turns to freefall and continues sleeping. I stand still and start staring at her proudly. Jessie has a mid length sleek hair with a slight curl in the end. It never sticks as much as she would love to, but still looks pretty. Half of her face is covered by her hair and the rest tilted into the pillow. She is wearing an uptown stripe Flannel Pyjamas, which we bought two years back at a ck warehouse near&amp;nbsp; Chadstone. That was the second or third day after she moved into Melbourne with me. I still remember, she was wearing a Sudithar which I bought from Delhi. It was felt awkward for us to check in to all the branded shops with an Indian outfit. For first three months she was not&amp;nbsp;comfortable wearing Pyjamas, cursing me for paying hundred dollars for a night wear. I kept insisting that this would suit her in this Melbourne weather. She did find it out good in the end, now has three different styles of Pyjamas from the same warehouse, and even recommends ck to her reading group colleagues at her university. She still wears socks when sleeping though. She gets stuffy when turning the ducted heater on. So we always switch off the heater before we get to bed. Perhaps we should buy an electric heater.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Is somebody staring at his princess?"&lt;/span&gt;&lt;/b&gt; Jessie chuckles without turning her head up. I know she isn't sleeping. She is waiting for my next wakeup call to get up. I am like her alarm with snooze button always.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: purple;"&gt;&lt;b&gt;"Somebody's favorite coffee with almond milk is waiting.."&lt;/b&gt; &lt;/span&gt;she now gets up, adjusts her hair and checks my eyes to see whether she looks ok, I nod even though I still don’t understand why she does it every morning!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Thanks Jake, you know you don't have to do this, could have wake me up man...”&lt;/span&gt;&lt;/b&gt; she still yawns&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Waking you up, come on, I know you are tired, don’t ya?"&lt;/span&gt;&lt;/b&gt; I say wittingly.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Shut up you idiot, shall we go to lounge, I wanna check today's newspaper. There is an announcement of our readers’ group gathering... "&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Yes yes I checked it out already, you are chairing the panel right&amp;nbsp; ... What is it "Goat Runner" or something?"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"You fool, its "Kite Runner",&amp;nbsp;how many times we talked this before"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Come on honey I know it, just kidding"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Hushhhh... hopeless guy"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Put on the hooded lounger girl, its damn cold in the lounge"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;We get up, leave the bed unarranged and head to the lounge. It is still pretty early in the morning in Melbourne winter.&amp;nbsp; We both normally like to get up early, enjoy our coffee chitchats, at times even for an hour. Jessie works as a part-time tutor in Monash  University, teaching English Literature to undergrads. She is also reading her doctorate in contemporary literature of Asian migrants. She herself is a writer too, just got published her first novel &lt;a href="http://jk-blogging.blogspot.com/2010/09/door-mat.html"&gt;"Door Mat"&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"So how is your new story going Jess? The one you told me yesterday…"&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Ah, that “Girl Is Mine”? Just started it sir, long way to go. It’s in kind of a mess now and I am thinking of trashing it actually!"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Oh no, every story would look lovely when you start and then get crappier when you finish it, that's how a writer would normally&amp;nbsp; feel when writing, otherwise you can't write ... And I know you can write some serious literature!"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Jeez where did it come from? You do make sense at times ha!"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"As always! And do you have me in the story?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"You in my story? My goodness, I don't write loser's story maite"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Maite, ha? That’s funny!!! I am not a loser ok!"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"You are a loser, big loser"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"I am not … I gotcha doggone, mind it!"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"That's why you are a loser, wake up Jake, you know it better than anybody else"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;“Will you fuck’in stop calling me loser?...”&lt;/span&gt;&lt;/b&gt; I screamed rather whined all of a sudden. I feel bit cold now.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;“Oh come on, relax my boy, let’s have some music, turn it on honey”&lt;/span&gt;&lt;/b&gt;, typical Jessie, never gets mad, always turns the awkward situation round.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Now see, when you need something, loser turns honey, perfect"&lt;/span&gt;&lt;/b&gt; I go to our little Sony Dream Machine, docks my iPhone and play "Way Back Into Love"&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Good on ya, perfect for the morning, there you are my nice man" &lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;One of those things we both got attached to is music. Especially this song, we probably would have played more than the original song writer did.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"I’ve&amp;nbsp; been&amp;nbsp; watch – ing&amp;nbsp; but&amp;nbsp; the | stars&amp;nbsp; re – fused&amp;nbsp;&amp;nbsp;&amp;nbsp; to&amp;nbsp; shine |&amp;nbsp;&amp;nbsp; I’ve&amp;nbsp; been&amp;nbsp; search – ing&amp;nbsp; but&amp;nbsp; I | just&amp;nbsp; don’t&amp;nbsp; see&amp;nbsp;&amp;nbsp;&amp;nbsp; the&amp;nbsp; signs |&amp;nbsp;&amp;nbsp;&amp;nbsp; I&amp;nbsp; know&amp;nbsp; that&amp;nbsp; it’s&amp;nbsp; out |...."&lt;/span&gt;&lt;/b&gt; she sings.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Jessie! Tell you what? Let’s get to the piano, come on…"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Are you crazy? Its morning time, we need to get ready, will have it tonight darl…"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: purple;"&gt;&lt;b&gt;"No time like the present! lets play for few minutes"&lt;/b&gt; &lt;/span&gt;She gets up, moves to our small upright piano, takes out the small photo-stand and the flower-vase and keeps them in the coffee table, cleans the dust and slowly opens it.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Hurry up girl, you are taking ages"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Wait my son, not everybody is messier as you"&lt;/span&gt;&lt;/b&gt; she starts playing now. Half past six, Melbourne chill weather. It’s still dark outside.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: purple;"&gt;&lt;b&gt;".. F&amp;nbsp; D&amp;nbsp; F&amp;nbsp; D&amp;nbsp; F&amp;nbsp; D | A&amp;nbsp; G&amp;nbsp;&amp;nbsp;&amp;nbsp; D&amp;nbsp; F&amp;nbsp;&amp;nbsp;&amp;nbsp; F |&amp;nbsp;&amp;nbsp;&amp;nbsp; F&amp;nbsp; D&amp;nbsp; F&amp;nbsp; D&amp;nbsp; F&amp;nbsp; D | A&amp;nbsp; G&amp;nbsp;&amp;nbsp;&amp;nbsp; D&amp;nbsp; F&amp;nbsp;&amp;nbsp;&amp;nbsp; F |…"&lt;/b&gt; &lt;/span&gt;She plays delicately, with her eyes closed, digests and feels the music. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"I’ve&amp;nbsp; been&amp;nbsp; liv – ing&amp;nbsp; with&amp;nbsp; a | sha – dow&amp;nbsp;&amp;nbsp;&amp;nbsp; o&amp;nbsp; -&amp;nbsp; ver&amp;nbsp; -&amp;nbsp; head |&amp;nbsp;&amp;nbsp;&amp;nbsp; I’ve&amp;nbsp; been&amp;nbsp; sleep – ing&amp;nbsp; with&amp;nbsp; a | cloud&amp;nbsp; a – bove&amp;nbsp;&amp;nbsp;&amp;nbsp; my&amp;nbsp; bed |”&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="https://lh3.googleusercontent.com/-1P6HbhiGQqM/TW_EKRNuayI/AAAAAAAAApg/X2ctAlYet7I/s1600/piano+girl.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="https://lh3.googleusercontent.com/-1P6HbhiGQqM/TW_EKRNuayI/AAAAAAAAApg/X2ctAlYet7I/s200/piano+girl.png" width="141" /&gt;&lt;/a&gt;We sing, we continue singing ….&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"..&amp;nbsp; .. F&amp;nbsp; G&amp;nbsp; B&lt;sup&gt;b &lt;/sup&gt;|| C&amp;nbsp; C&amp;nbsp; C&amp;nbsp; B&lt;sup&gt;b&lt;/sup&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp; E&lt;sup&gt;b&lt;/sup&gt; | &lt;i&gt;DC&lt;/i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; F &amp;nbsp;G&amp;nbsp; B&lt;sup&gt;b&lt;/sup&gt; | C&amp;nbsp; C&amp;nbsp; C&amp;nbsp; B&lt;sup&gt;b&lt;/sup&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp; E&lt;sup&gt;b&lt;/sup&gt; | F&amp;nbsp;&amp;nbsp;&amp;nbsp; G&amp;nbsp;&amp;nbsp;&amp;nbsp; B&lt;sup&gt;b&lt;/sup&gt;&amp;nbsp; G&amp;nbsp; &lt;i&gt;F&lt;/i&gt; |&amp;nbsp; "&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"And&amp;nbsp; If&amp;nbsp; I | o – pen&amp;nbsp; my&amp;nbsp; heart&amp;nbsp;&amp;nbsp;&amp;nbsp; a – gain |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I&amp;nbsp; guess&amp;nbsp; I’m | hop – ing&amp;nbsp; you’ll&amp;nbsp; be&amp;nbsp;&amp;nbsp;&amp;nbsp; there&amp;nbsp;&amp;nbsp; for | me&amp;nbsp;&amp;nbsp;&amp;nbsp; in&amp;nbsp;&amp;nbsp; the&amp;nbsp; end"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;She is still singing with her eyes closed, effortlessly hitting the high end notes. Her fingers have such a control on that instrument. She feels the music, sings and continues singing. It comes from her heart.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I now stand up, get closer to her, look at her face..... stare at her forehead and ……. kiss her on the cheek and whispers ....&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"I love you Jessie"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"What? Come Again ...You said that?"&lt;/span&gt;&lt;/b&gt; Jessie was shocked when I told my love to her. It was a typical tropical Colombo sunny morning; I was going to drop her in the university which is on my way to office. She lives in my neighborhood and I usually give her a lift to her university in the mornings. We know each other well; at least I thought we know. We do share common interests, talk about the books we read for hours. Its just one of those many reasons I probably would have fallen for her.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Yes Jessie, I mean it, will you marry me?"&lt;/span&gt;&lt;/b&gt; perhaps this probably is the worst place and time to propose your girl; Early morning, on the way to work and school, inside a car which is parked in a roadside where heavy traffic noise coming through the closed windows. May be I should have taken her to a sea breeze and done this. Mmmm.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;"&lt;span style="color: purple;"&gt;Oh my Jake, Where does it come from? Seriously didn't expect ...."&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;"&lt;b&gt;Why Jessie, I think we can make ourselves a good couple, I given a serious thought to it, not today, not yesterday, almost for an year ... "&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Gosh, then why didn't you tell me before? Oh Jake…"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"I took my time, I wanted to make sure everything gonna be ok and everybody gonna be ok, and Jessie.... it will be perfect, I swear"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;"&lt;span style="color: purple;"&gt;Jesus Christ.... you telling this to me Jake? Is this happening?... you know what Jake, I really like you, and you are my best friend and too good of a guy to miss out....... but I can't ... I can't do this, please don't ask ..."&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Jessie, but&amp;nbsp; ..."&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Please Jake ..."&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I stared at the car audio player, which I just paused in order to talk to Jessie. I began to shiver rather violently, the car instantly feeling ten degrees colder even though the cooler is switched off. I put my seat belt on suddenly, lowered the window glass and started staring outside. Its morning still, students just started&amp;nbsp; to gather inside the campus compound and chit chat. Some students are talking to themselves with some notes in hand. They must be memorizing something, it should be an exam period.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Who is it Jessie?"&lt;/span&gt;&lt;/b&gt; ,I am still staring at the girl who is sitting on a bench stone, studying the notes with a bit of a panic, should be memorizing something for today's exam. I didn’t turn my face to Jessie.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Gogol"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Oh, that medical student …”&lt;/span&gt;&lt;/b&gt; I was stunned a bit, and started whispering.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: purple;"&gt;&lt;b&gt;“We all came out of Gogol's overcoat..."&lt;/b&gt; &lt;/span&gt;I was still staring at the girl studying for the exam at the last minute, scared to turn my head into my own car. Jessie might find me out weeping.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Overcoat, Fyodor Dostoyevsky, nineteenth century ...” &lt;/span&gt;&lt;/b&gt;She finished my sentence. This is the Jessie I love. A literature student, she knows everything about me, every time correctly reads my mind except of one thing eventually which mattered most to me. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;“You guys just entered the campus, don’t ya?”, &lt;/b&gt;&lt;span style="color: black;"&gt;I couldn't hide my frustrating inquisitiveness&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;“Its been six months Jake”&lt;/span&gt;&lt;/b&gt; she said &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: purple;"&gt;&lt;b&gt;“Fuck ... Fuck ... Fuck .... this fuck'in damn loser waited ..waited... waited for one long year...... exactly twelve months”&lt;/b&gt; &lt;/span&gt;My voice cracked with self pity.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Please Jake.... don’t go there. Sorry, by any means had I disturbed you, I am really sorry, you are my friend... my best friend, who else I can talk about Lahiri for hours?”&lt;/span&gt; &lt;/b&gt;I know she meant it, but then after all she didn't even discuss about Gogol with me. She didn’t feel the way I felt.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"You never felt it, did you Jessie?" &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Its Over Jake, Over .."&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"Yeah, Over ... I will be good Jessie, I will get through this....."&lt;span style="color: black;"&gt;,&lt;/span&gt; &lt;/b&gt;&lt;span style="color: black;"&gt;The sudden muzzle brought in.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"Wanna pick you in the evening?"&lt;/b&gt;,&lt;span style="color: black;"&gt; I still didn't turn to Jessie.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"No, its fine Jake, Thanks and.... Take care; I am sure you will have much better find”&lt;/b&gt; &lt;span style="color: black;"&gt;,now I turned at her and given a dry smile.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;Its you Jessie! Sorry for everything, call me later, hey don't forget “The Kite Runner”, will collect it tomorrow"&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;She smiled, got down from the car, hesitated a bit, and waved at me. I started the car ignition.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="color: purple;"&gt;"Did I lock the door?"&lt;/span&gt;&lt;/b&gt; I wasn’t sure. I made this habit of not locking the door when leaving my house only to coming back and check. I stopped my car, got out and checked the door. It wasn't locked; I waited for a moment and got into the lounge. The piano’s fall-board was left open, with nothing placed on the top. I closed the fall-board. Took the flower vase on the coffee table and placed it on top of the piano. I took the "Kite Runner" book which was kept open upside down, bookmarked it and put it in the shelf. I found my empty tea cup is also left out there with another cup full of coffee with almond milk. I poured the coffee in the kitchen sync, cleaned the cups and kept them inside the pantry cupboard. I switched off all the lights and took few steps towards the door, turned back and had a dry stare at my house. It's emptiness scared me. It looked so dark at early Melbourne morning eight o’ clock. The new house’s wall paints' smell chilled my spine.&lt;br /&gt;I suddenly went in, walked through all the rooms. The bed room, study room, baby room, visitor’s room, bath rooms, living room and kitchen; I went every where, turned on every other lights in the house. It was still dark inside. It looked even more scary now. I moved to my piano and opened it. I kept the flower vase back on the coffee table. I took the "Kite Runner", opened it and kept it upside down again on the coffee table. I went to the kitchen, made a coffee with Almond milk, poured into two cups, brought into my lounge. I finished my cup.&amp;nbsp; I got up, didn't look back my lounge, rushed to my car and started the ignition.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; text-align: justify;"&gt;&lt;b&gt;"The door is left open yet again!"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: #666666; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;There is emptiness, and there is love. Emptiness is pristine, clear, ever peaceful awareness. To get to love, though, you have to be willing to feel, and agonize, and laugh, and hug, and weep, and roar, and tremble. And it is worth it. &lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote style="color: #666666; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;             We must be both intimate, and detached. &lt;/i&gt; &lt;/blockquote&gt;&lt;blockquote style="color: #666666; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;We must become the emptiness. Then fill it with love. Then invite others into it. &lt;/i&gt;             &lt;/blockquote&gt;&lt;blockquote style="color: #666666; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;It is only by rising out, and staying connected, that we elevate the whole, which we are. &lt;br /&gt;&lt;br /&gt;-------------Jack Haas&lt;/i&gt;&lt;/blockquote&gt;&lt;div class="MsoNormal" style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&amp;nbsp;   &lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;--------------------------------- THE END-------------------------------------- &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-5930830433697922421?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/5930830433697922421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/03/girl-is-mine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/5930830433697922421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/5930830433697922421'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/03/girl-is-mine.html' title='The Girl Is Mine!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-fxjOZPPDpAs/TW_D2OUEXdI/AAAAAAAAApc/_MCXQJTfdfA/s72-c/Girl-Sleeping.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-8693692284482715008</id><published>2011-01-30T04:01:00.000+11:00</published><updated>2011-01-30T04:01:50.330+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hsenid'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='SDP'/><title type='text'>Moving to Cloud : A Contemporary Solution</title><content type='html'>Recently I have been working on a Cloud project, an attempt to host a full and full Service Delivery Platform (SDP) in cloud. Which means we are working on a solution to manage SDP eco system completely on cloud. This obviously may sound easier and familiar, but not in reality.&lt;br /&gt;&lt;br /&gt;Most of the telco services are not using conventional protocols like HTTP or REST but they use SMPP, MM7, SS7, USSD etc. Exposing these services or rather connecting this services to/from a cloud hosted platform over Internet is extremely cumbersome. Using different protocols means you need to make sure the secure channels for each communicative mechanisms, and telcos' and governments' own security regulations will not allow to expose these services to outside network at first place.&lt;br /&gt;&lt;br /&gt;Assuming we solve this security constrain, still the cloud SDP looks inefficient when we get deeper into the design. A conventional SDP needs orchestrations among many network services. Having SDP in cloud means, this orchestration workflow needs to communicate to Telco backend services multiple times over Internet with its high latent network. This will lead to a very ineffective chatty communications. This could well become a major concern when we have number millions of SDP transactions per day.&lt;br /&gt;&lt;br /&gt;But then ofcourse I wouldn't have written these problems had we not found the solutions, would I? Cloud SDP is our major strategic product with its unique flavors like Vishma and Soltura. So we have been addressing this problems and designed a system which overcome this barriers in style.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lani-loreta.blogspot.com/2010/09/trying-to-make-cloud-bit-less-cloudy.html"&gt;Noelani&lt;/a&gt;, a member of our Technical Marketting Team, put these design ideas into a research article and published in our resource center recently. The details in the paper does look handly not just for a SDP system, but for any system of its kind. The problems we faced here are common when moving any real time middle ware to cloud, but I feel the solution is something unique(Not something out of the box, but very unique).&lt;br /&gt;&lt;br /&gt;I am hoping to write more and more on distributed workflow engine and all in time. For now visit our article in the following URL...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hsenidmobile.com/resources/category/32-cloud-sdp-resources"&gt;Moving To Cloud SDP : A Contemporary Solution&lt;/a&gt; (You may need to do a free registration to access the resources, but worth an effort I guarantee you!)&lt;br /&gt;&lt;br /&gt;You can get more information on our work on Cloud SDP &lt;a href="http://www.hsenidmobile.com/solutions/messaging/mchoice-cloudtap"&gt;here&lt;/a&gt; ..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-8693692284482715008?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/8693692284482715008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/01/moving-to-cloud-contemporary-solution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/8693692284482715008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/8693692284482715008'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/01/moving-to-cloud-contemporary-solution.html' title='Moving to Cloud : A Contemporary Solution'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-2691057277104617158</id><published>2011-01-05T03:20:00.001+11:00</published><updated>2011-01-05T03:22:16.948+11:00</updated><title type='text'>My Picks of 2010</title><content type='html'>&lt;span style="font-size: large;"&gt;Technology/Industry&lt;/span&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://www.inc.com/uploaded_files/image/ipad-unveiling-pop_2778.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="137" src="http://www.inc.com/uploaded_files/image/ipad-unveiling-pop_2778.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;&lt;li&gt;Best Applications : &lt;b&gt;Singapore iPhone Maps and &lt;a href="http://appshopper.com/travel/sg-buses"&gt;SG Buses&lt;/a&gt; &lt;/b&gt;&lt;/li&gt;&lt;li&gt;Best emerging product : &lt;b&gt;Tablets&lt;/b&gt;&lt;span style="font-style: italic;"&gt; ( iPad ofcourse ;) ) &lt;/span&gt;&lt;/li&gt;&lt;li&gt; Flop application/framework : &lt;span style="font-weight: bold;"&gt;Mobicents!&lt;/span&gt; ( &lt;span style="font-style: italic;"&gt;!@#$&lt;/span&gt;)&lt;/li&gt;&lt;li&gt; Emerging Concept :&lt;span style="font-weight: bold;"&gt; Domain Specific DSL, way to go!&lt;/span&gt;&lt;/li&gt;&lt;li&gt; Best Blog Post : &lt;b&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/02/mchoice-soltura-subscriber-created-vas.html"&gt;Subscriber Created VAS&lt;/a&gt;&lt;/b&gt; ( He he !)&lt;/li&gt;&lt;li&gt; Best I learned/ing : &lt;span style="font-weight: bold;"&gt;Scala(Contd), DSL&lt;/span&gt;&lt;/li&gt;&lt;li&gt; Regret : All is Well!!! &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;a href="http://newshopper.sulekha.com/ptiimages/original700/rahul-gandhi.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://newshopper.sulekha.com/ptiimages/original700/rahul-gandhi.jpg" width="158" /&gt;&lt;/a&gt;&lt;span style="font-size: 130%;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;Politics &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Political Incident of the year: &lt;b&gt;Wikileaks&lt;/b&gt;&lt;/li&gt;&lt;li&gt; Best Politician : &lt;b&gt;Rahul Ghandi &lt;/b&gt;(Promising young leader) &lt;/li&gt;&lt;li&gt; Worst Politician : &lt;span style="font-weight: bold;"&gt;Awarded, but anonymity kept since many know it!!!&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;Sports&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.womenstennisblog.com/wp-content/uploads/2010/12/Serena-Williams-The-Championships-Wimbledon-2010-Day-Twelve-Photo-LIFE_1291383321632.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="131" src="http://www.womenstennisblog.com/wp-content/uploads/2010/12/Serena-Williams-The-Championships-Wimbledon-2010-Day-Twelve-Photo-LIFE_1291383321632.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt; Sporting Incident : &lt;span style="font-weight: bold;"&gt;Shocking AFL drawn, never imagined!&lt;/span&gt;&lt;/li&gt;&lt;li&gt; Best Sportsman : &lt;b&gt;Sachin&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/b&gt; - Cricket ( Rock Solid )&lt;/li&gt;&lt;li&gt; Best Sportswoman : &lt;b&gt;Serena Williams &lt;/b&gt;&lt;/li&gt;&lt;li&gt; Worst sporting incident : Tiring three days' eleven hours Wimbledon match :)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;Entertainment (Tamil)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://www.filmmy.com/images/Vinnaithandi-Varuvaaya-_5_.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="132" src="http://www.filmmy.com/images/Vinnaithandi-Varuvaaya-_5_.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;VTV : Best Film for many!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;&lt;a href="http://3.bp.blogspot.com/_f7mJAzX1cHA/TGRXOGaIesI/AAAAAAAAACs/eJpaeeD72V0/s1600/emy+jackson.bmp" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="151" src="http://3.bp.blogspot.com/_f7mJAzX1cHA/TGRXOGaIesI/AAAAAAAAACs/eJpaeeD72V0/s200/emy+jackson.bmp" width="200" /&gt;&lt;/a&gt;&lt;li&gt; Best Tamil Song  : &lt;b&gt;Anbil Avan&lt;/b&gt; (Vinnay Thandi Varuvaya)&lt;/li&gt;&lt;li&gt; Best Male Singer : &lt;b&gt;Benny Dayal&lt;/b&gt;(Omana Penne)&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Best Female Singer : &lt;b&gt;Harini&lt;/b&gt; (Pookal Pookum Tharunam)&lt;/li&gt;&lt;li&gt;Dialogue : &lt;b&gt;Manthira Punnagai&lt;/b&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Song Lyrics : &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Vairamuththu&lt;/b&gt; (Kandai Aninchava kondai sarinchchathum vanda sarasaram pochchu)&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Arivumathy&lt;/b&gt; (Intha Mounaththai naan unara eththanai vaarththai kadanthu vanthen) &lt;/li&gt;&lt;/ul&gt;&lt;li&gt; Best Actress : Emy Jackson (Madraspattinam)&lt;/li&gt;&lt;li&gt;Rest of ALL the awards go to&amp;nbsp; :&lt;b&gt;Vinnai Thandi Varuvaya&lt;/b&gt;(What an honest attempt!)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;Entertainment (English)&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.lyricsystem.com/img/photos/a4047taylorswift.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://www.lyricsystem.com/img/photos/a4047taylorswift.jpg" width="163" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Best Song :&lt;b&gt;&lt;a href="http://www.youtube.com/watch?v=-oCCnxBos10"&gt;Hold My Hand&lt;/a&gt;&lt;/b&gt; MJ and Akon (MJ fans, watch "This is it" again, you will be heart broken for sure)&lt;/li&gt;&lt;li&gt;Best Female Singer : &lt;b&gt;&lt;a href="http://www.youtube.com/watch?v=GgJ42N3zYLk"&gt;Taylor Swift&lt;/a&gt;&lt;/b&gt; - Speak Now( Classic Guitar and Her voice combo!)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Best Male Singer :&lt;span style="font-weight: bold;"&gt; Now Awarded&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Best Movie : &lt;b&gt;Inception&lt;/b&gt; (Any doubt?) &lt;/li&gt;&lt;li&gt;Biggest Flop :&amp;nbsp; &lt;b&gt;Salt&lt;/b&gt; (Even Anjelina cannot cure ! )&lt;/li&gt;&lt;li&gt;Best Actor    : &lt;span style="font-weight: bold;"&gt;Leonardo Dicaprio&amp;nbsp;&lt;/span&gt; ( Shutter Island )&lt;/li&gt;&lt;li&gt;Best Actress : &lt;b&gt;Not Awarded&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://www.kamalkaur.net/wp-content/uploads/2010/08/KiteRunner.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://www.kamalkaur.net/wp-content/uploads/2010/08/KiteRunner.jpg" width="123" /&gt;&lt;/a&gt;&lt;span style="font-size: 130%;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;Novels/Contemporaries/Biographies Read this year&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;The Kite Runner(Khaled Kosseini&lt;/span&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Interpreter of Maladies&lt;/span&gt; (Jhumba Lahiri)&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Five Point Someone&lt;/span&gt; (Chetan Bagat)&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Tipping Point&lt;/span&gt; (Malcom Gladwell)&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Sujatha Short Stories Volume2 &lt;/span&gt;(Sujatha)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Places Visited&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;KL, Malaysia&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Desaru, Malaysia&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Melbourne, Australia&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Perth, Australia&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Jaffna, Sri Lanka&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Colombo, Sri Lanka&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Delhi, India&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Kathmandu, Nepal&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Pokara, Nepal&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;Man of the year : &lt;a href="http://www.blogger.com/goog_825410417"&gt;As&lt;span id="goog_825410411"&gt;&lt;/span&gt;&lt;span id="goog_825410412"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Julian_Assange"&gt;sange&amp;nbsp;&lt;/a&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.moonbattery.com/obama-assange-medal.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" src="http://www.moonbattery.com/obama-assange-medal.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To see my 2009 picks &lt;a href="http://jk-blogging.blogspot.com/2009/12/my-picks-of-2009.html"&gt;Check Here &lt;/a&gt;&lt;/li&gt;&lt;li&gt;To see my 2008 picks &lt;a href="http://www.facebook.com/jeyakumaran?v=box_3&amp;amp;ref=profile#/note.php?note_id=72527380128"&gt;Check Here &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-2691057277104617158?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/2691057277104617158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2011/01/my-picks-of-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2691057277104617158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2691057277104617158'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2011/01/my-picks-of-2010.html' title='My Picks of 2010'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_f7mJAzX1cHA/TGRXOGaIesI/AAAAAAAAACs/eJpaeeD72V0/s72-c/emy+jackson.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-921382043131022830</id><published>2010-12-20T13:27:00.000+11:00</published><updated>2010-12-20T13:27:16.335+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='MappedByteBuffer'/><category scheme='http://www.blogger.com/atom/ns#' term='FIFO'/><category scheme='http://www.blogger.com/atom/ns#' term='nio'/><title type='text'>Ashes Queue!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_rnnosU03F6U/TQ6-7Ihm9fI/AAAAAAAAAo4/IrZKkoxF6hw/s1600/ashes.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_rnnosU03F6U/TQ6-7Ihm9fI/AAAAAAAAAo4/IrZKkoxF6hw/s200/ashes.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Was spending a week in developing a simple highperforming FIFO queue implementation with persistence support on overflowing cases. This can be used for serveral unique producer consumer scnarios like controlling TPS, overload protection and ofcourse controlling the memory.&lt;br /&gt;&lt;br /&gt;For more info have a look at &lt;a href="http://code.google.com/p/ashes-queue/"&gt;Ashes Queue&lt;/a&gt; ... Feedbacks Welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-921382043131022830?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/ashes-queue/' title='Ashes Queue!'/><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/921382043131022830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/12/ashes-queue.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/921382043131022830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/921382043131022830'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/12/ashes-queue.html' title='Ashes Queue!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_rnnosU03F6U/TQ6-7Ihm9fI/AAAAAAAAAo4/IrZKkoxF6hw/s72-c/ashes.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-7445167970231579086</id><published>2010-11-16T14:46:00.000+11:00</published><updated>2010-11-16T14:46:05.748+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='short story'/><title type='text'>Papaya Story!</title><content type='html'>I used to tell people whether they know the Papaya story when ever they try to butter to get things done from me. But I never revealed the story to anybody. People became curious in the end I had to tell the story eventually. The story is nothing but the old mother-times story but I made it little more interesting :)&lt;br /&gt;&lt;br /&gt;Here you go ...&lt;br /&gt;&lt;br /&gt;&lt;span class="Yd"&gt;&lt;span class="ze"&gt;"There is this guy called Saya! He does things for pride always! &lt;br /&gt;One day he and his girlfriends were walking along a street, there was a tall papaya tree with full of ripe red papaya fruits in it. &lt;br /&gt;One of the girls wanted the fruits, asked him to pluck one for her! He hesitated first but then all the girls insisted, so he started  climbing.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Yd"&gt;&lt;span class="ze"&gt;Midway through, the tree started to creep. So this guy scared and stopped climbing. But all the girls were still cheering "Climb Saya Climb" (Read like "Run Forrest Run" from Forest Gump!). So this guy  was pumped up and excited, kept climbing despite the tree still creeping.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Yd"&gt;&lt;span class="ze"&gt; &lt;br /&gt;In the end the tree was broken and he fell, his nose cut down :). There was this handsome guy called JK came to rescue him, called ambulance and madesure he is safe and secure! The Girls had their papayas and walked away with JK and had a wonderful evening time with him.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Yd"&gt;&lt;span class="ze"&gt;Moral of the story : Over to you!!! &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-7445167970231579086?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/7445167970231579086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/11/papaya-story.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/7445167970231579086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/7445167970231579086'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/11/papaya-story.html' title='Papaya Story!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-6298984159323560682</id><published>2010-10-07T09:44:00.001+11:00</published><updated>2010-10-07T12:16:51.788+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional programming'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><category scheme='http://www.blogger.com/atom/ns#' term='oop'/><title type='text'>Scala User Group Meeting</title><content type='html'>Last week I just attended the &lt;a href="http://groups.google.com/group/scala-melb?hl=en-GB"&gt;Scala User Group&lt;/a&gt; Meeting in Melbourne. It was merely an hour and a half meeting of 10 of us where &lt;a href="http://benhutchison.wordpress.com/"&gt;Ben&lt;/a&gt; talked about ScalaCheck testing tool with some excellent examples. Then the meeting continued discussing the ScalaCheck testing models, Scala's abilities of FP, the nuances of design patterns "invented" by gof and other OOP pundits! There is an obvious bias towards Functional Programming, but justifiable of course!&lt;br /&gt;&lt;br /&gt;I have worked on a Scala project which recently went live and running with no hassles. But the discussion with Ben and his team and of course by looking at their FP based Scala code, I am now bit ashamed to claim my project a Scala project! True its a pure Scala code based. But the major portion of the code base is hanging around object oriented concepts but not functional programming.&lt;br /&gt;&lt;br /&gt;My next important assignment is to make sure me and my fellow developers apply this functional programming effectively, keeping OOP only as an overarching layer but not penetrating into the to core coding. Its a big challenge in two ways. One is learning the art of functional programming which I believe is not easy as much as object oriented programming. The next is to changing the mindset of the developers to think on the functional programming way.&lt;br /&gt;&lt;br /&gt;The good thing is we made the start, moving on from Java emperor. I am sure one day, possibly next year I will give a talk on Scala to the same user group!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-6298984159323560682?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/6298984159323560682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/10/scala-user-group-meeting.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6298984159323560682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6298984159323560682'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/10/scala-user-group-meeting.html' title='Scala User Group Meeting'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-2826427900262654765</id><published>2010-09-11T01:55:00.003+10:00</published><updated>2010-09-12T11:02:21.248+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='short story'/><title type='text'>Door Mat</title><content type='html'>&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_rnnosU03F6U/TIucYSDw7zI/AAAAAAAAAn0/5Iv9QM8QBps/s1600/19751_319400296414_624696414_3927151_5459133_n.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="150" src="http://3.bp.blogspot.com/_rnnosU03F6U/TIucYSDw7zI/AAAAAAAAAn0/5Iv9QM8QBps/s200/19751_319400296414_624696414_3927151_5459133_n.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;Dawn to Sunrise: Credit: Sayanthan&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Its still&amp;nbsp; not dawn in &lt;a href="http://en.wikipedia.org/wiki/Jaffna"&gt;Jaffna&lt;/a&gt; yet! Time is half past five in the morning. Wilson's sudden barking woke up every dog in the neighborhood and neighbors too. Jessie noticed her mother has already woken up.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="color: #4c1130;"&gt;"Wake up Jessie, I don't know why is this dog howling like seen a ghost, can you go and check, this dog will never listen to me"&lt;/span&gt;&lt;/b&gt; -- Jessie's mother from kitchen asked Jessie. Jessie's mother never calls Wilson with his name which she found really  odd. She was suggesting typical dog names like "Jimmy" or "Zesor".&lt;/blockquote&gt;&lt;blockquote&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_rnnosU03F6U/TIuY5jTiIuI/AAAAAAAAAns/6ImJSf0Xgg4/s1600/Picture+006.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="111" src="http://2.bp.blogspot.com/_rnnosU03F6U/TIuY5jTiIuI/AAAAAAAAAns/6ImJSf0Xgg4/s200/Picture+006.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;JK's Jaffna Home Portico&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp;&lt;b&gt;&lt;span style="color: #4c1130;"&gt;"Wilson must have seen something ma, lemme checkout"&lt;/span&gt;&lt;/b&gt;, Jessie slowly gets up from the bed, checks herself in the mirror, adjusts her long hair and goes to backyard where Wilson is tied up.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="color: #4c1130;"&gt;"Good Morning Wilson, what's up with you? Are you ok?" &lt;/span&gt;&lt;/b&gt;--Wilson turns to happy mood after seen her and barks playfully now. Jessie raised the small Wilson and cuddled him with a delicate touch on his head. Now his bark turns into a little yip. Jessie recalls the namesake of Wilson refreshingly.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_rnnosU03F6U/TIuciQHGHqI/AAAAAAAAAn8/tCrPLZqXr8g/s1600/IMG_0109.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/_rnnosU03F6U/TIuciQHGHqI/AAAAAAAAAn8/tCrPLZqXr8g/s200/IMG_0109.JPG" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;Feral Domestic Dog, Zesor&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;b&gt;&lt;span style="color: #4c1130;"&gt;"So you got a little dog, ha? Labrador or something?"&lt;/span&gt;&lt;/b&gt; Jake asked Jessie.&lt;/blockquote&gt;This is their second meet. Its a canteen of the university where Jessie working as an English literature lecturer.&lt;br /&gt;&lt;blockquote&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Ha ha ha, my salary is not even enough to feed a Labrador. This is a feral domestic dog, just two days old I guess, so cute and lovely"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"So you love dogs... well is it he or she?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"He of course, Do you have a dog at your LA place?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"I would love to, but who will dog-sit and clean its poops haa?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Oh, they can't just go out on their own? Jaffna dogs can do things on their own.."&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"May be you just come and tell that to Americans! haven't told his name yet?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Name? I just got him yesterday, ma is calling him Jimmy, but no naming done yet"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Wilson?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Wilson, you mean the dog name?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Yeah, Wilson"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Never heard such a name for a dog in Jaffna, where does it come from?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Its a character in Tom Hanks' latest movie, you watched Cast Away?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"No, I seldom watch English movies, Who is Tom Han?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Hushhh..."&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"What's that Hushhh..."&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Forget it, its a long story, there in the movie, Wilson is an interesting character, I have the VCD at home, may be we can watch when you come there"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"When?"&lt;/b&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;Jake has been seeing Jessie just less than a week now. Jake moved to Los Angeles fifteen years back, had his schooling there. He came to Jaffna to visit his aging parents for a three months vacation. One of Jessie's colleagues is his distant relative. That's how Jake was introduced to Jessie's father.&lt;br /&gt;&lt;br /&gt;Wilson seems to be calmed down now. Jessie goes and makes a coffee and comes to sit at their porch garden. There is still a mild breeze out there. No feel can match having a strong coffee on a Jaffna early morning cold weather. Divine!&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: #4c1130;"&gt;&lt;b&gt;"Such a cunning smile ..erghh.. "&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Its fine to call me Jake"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Why did you smile... Jake, my mum made the coffee!"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"The coffee is nice!"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"But that was more of a grin smile!"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"No, I was just comparing this awkward situation with US"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Awkward situation? Don't they drink coffee? I heard they drink coffee with no sugar? sooo funny!"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Yea, I didn't mean it, first day of date at girl's porch garden, her parents and friends hiding behind the window glasses, eavesdropping what we speak .. ha ha ha"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Of course this is not US, in fact I am surprised my father allowed even to this extent"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"So you are fine moving to LA"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"LA?"&lt;/b&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_rnnosU03F6U/TIueQdWStAI/AAAAAAAAAoE/inSCE0EG4WM/s1600/56515980.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="131" src="http://1.bp.blogspot.com/_rnnosU03F6U/TIueQdWStAI/AAAAAAAAAoE/inSCE0EG4WM/s200/56515980.jpg" width="200" /&gt;&lt;/a&gt;&lt;b&gt;"Los Angeles, that's where I live"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Oh, Is that a statement or question? I don't have a say anyway right? Do I?"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Well not really, this is only a meet and its your life after all"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Yeah its my life after all..."&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Look Jessie, world is much much broader than Jaffna, this war, deaths, fights for nothings, all these hoo haas, you are an English literature lecturer, you can come and work there, may be doing a fellowship at &lt;a href="http://www.calstatela.edu/"&gt;CSU&lt;/a&gt;, US is a country of opportunities"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Me working there? You kidding me? Then who looks after the house? kids and all later?"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Hey doormat! don't go there right away, too fast for kids haa"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Na na na, I just telling"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"See this is what our problem is, just let the life loosen up, There are lot to learn from Americans. You hardly see housewives in American families, yet they do everything we managed to do, most of the times with much much betterment. Bottom line is they enjoy their lives!"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"So you called me doormat haa? That's funny... May I ask you a question? Why did you change your name to Jake? Jeyakrishnan sounds far better... Identity crisis?"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Identity crisis? You dangerous literature people ha, I always felt so embarrassed by my name.... You feel like you're causing someone pain just by being who you are."&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Ha ha ha, That's &lt;a href="http://en.wikipedia.org/wiki/Jhumpa_Lahiri"&gt;Lahiri&lt;/a&gt;"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"What?"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"That's from Ms Lahiri, Pulitzer Price Winner this year, what you just said..."&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Damn, so you read her too, finished &lt;a href="http://en.wikipedia.org/wiki/Interpreter_of_Maladies"&gt;Intepreter of Maladies&lt;/a&gt;?"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Of course, few times..." &lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Cool, My favorite, I can relate myself a lot with those stories in it, loved them.."&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"So cute, then I am fine"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Fine what?"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Seems, ma is calling, are we done?"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;"Hey doormat, you said something... fine with what?"&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;Jessie got up, collected the empty coffee cups and the tray, took few steps towards the portico, stopped a bit, turned and smiled.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="color: #4c1130;"&gt;"Hushhh..."&lt;/span&gt;&lt;/b&gt;-- Jessie told with a little shy and went into the house, or was she running?&lt;/blockquote&gt;Time runs so fast. Three months with Jake had passed like a blink of an eye. Jake and Jessie talked a lot&amp;nbsp; during this period. Renovating their LA house, history of civil war, Oprah Winfrey, &lt;a href="http://en.wikipedia.org/wiki/Ilaiyaraaja"&gt;Ilaiyarajah &lt;/a&gt;to Back Street Boys, Merchant of Venice, &lt;a href="http://en.wikipedia.org/wiki/Sengai_Aaliyan"&gt;Sengai Aazhiyaan&lt;/a&gt;, share market, Sampras, they just wanted a topic to keep talking, spending time with each other. When two different value systems interact, there will be lot to talk, discuss, argue and fight. Jake and Jessie had everything happened in this last three months. They found something common in them, related each other, at least they thought they did!&lt;br /&gt;&lt;br /&gt;Its still not dawn yet, Jessy finished her coffee, but still little sleepy to get up. Jake left to US two days back. He must be on his way to LA now. May be he will call her in few hours. Hopefully ma's friends won't call and engage the phone for hours early in the morning. Jessie had a big yawn and then got up just when the phone was ringing.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="color: #4c1130;"&gt;"Jessie, attend the phone, it may be Krishnan's"&lt;/span&gt;&lt;/b&gt; -- ma never wanted to call Jake with his nick name. She thinks its odd to call a Jaffna person with a name like Jake.&lt;/blockquote&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="color: #4c1130;"&gt;"It can't be him ma, he must be still flying"&lt;/span&gt;&lt;/b&gt;,&amp;nbsp; Jessie went and took the phone with a disbelief.&lt;/blockquote&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="color: #4c1130;"&gt;"Hey Doormat!"&lt;/span&gt;&lt;/b&gt;, Jake from other end for her surprise.&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Wow Jake! you already reached LA? I thought you are still flying"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Yeah still flying...Using in-flight phone "&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"What, you are crazy!"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Can't wait to call ..."&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Hushhh... Big liar, you didn't call me at the transit, seems boring air hostess this time haa?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Hey, you caught up with this Hush haa? I woke you up so early?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Na na na, you know what, Wilson woke up all of us early, he must have found something wrong" -- &lt;/b&gt;There is no reply from Jake for a second&lt;b&gt;&lt;/b&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote style="color: #4c1130;"&gt;&lt;b&gt;"Jake, are you still there?"&lt;/b&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Hang on Jessie, Something wrong out here"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"What? Didn't hear you"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Something fishing out here, Captain announces there is a bomb aboard, looks like a hijack"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Jakeee, tell me you are not kidding, I am scared"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Jessie, ... Yeah its a joke, don't worry, the line is not clear, sometimes it may get disconnected, don't worry"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Are you sure Jake, stay with me, you hear me?"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Yea I do, hey doormat, don't worry... I love you.."&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"Jake, are you ok? I can't hear you well"&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #4c1130;"&gt;&lt;b&gt;"I love you doorm..."&lt;/b&gt;&lt;/div&gt;&lt;/blockquote&gt;&amp;nbsp;Jessie hears some abrupt noises,&amp;nbsp; eventually the phone gets disconnected..&lt;br /&gt;&lt;blockquote style="color: #4c1130;"&gt;&lt;b&gt;"Jakeeeee!!!"&lt;/b&gt;&lt;/blockquote&gt;Its still&amp;nbsp; not dawn in &lt;a href="http://en.wikipedia.org/wiki/Jaffna"&gt;Jaffna&lt;/a&gt; yet! &lt;br /&gt;-------------------------------------------------&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;i&gt;On the morning of &lt;b&gt;11&lt;sup&gt;th&lt;/sup&gt; September 2001&lt;/b&gt;, terrorists hijacked four commercial passenger jet airliners to  attack the World Trade Center twin towers. From this four hijacked  airliners, two airliners were deliberately crashed into the Twin Towers  of the World Trade Center in New York City that killed everyone on board  and many others working in the buildings ....&lt;/i&gt;&lt;br /&gt;&lt;i&gt;------------------------------------------------THE END---------------------------------------------------------------------&lt;/i&gt;&lt;br /&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/04/i-am-jake-in-short-jk-errrh-jessie.html"&gt;You may like JK's this story too!&lt;/a&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-2826427900262654765?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/2826427900262654765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/09/door-mat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2826427900262654765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2826427900262654765'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/09/door-mat.html' title='Door Mat'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_rnnosU03F6U/TIucYSDw7zI/AAAAAAAAAn0/5Iv9QM8QBps/s72-c/19751_319400296414_624696414_3927151_5459133_n.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-1130342712775643033</id><published>2010-09-03T01:42:00.000+10:00</published><updated>2010-09-03T01:42:23.275+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SLF4J'/><category scheme='http://www.blogger.com/atom/ns#' term='LOGBack'/><category scheme='http://www.blogger.com/atom/ns#' term='log4j'/><category scheme='http://www.blogger.com/atom/ns#' term='commons-logging'/><title type='text'>Next Generation Logging .... SLF4J + LOGBack</title><content type='html'>Recently I did a presentation to our engineering on SLF4J and LOGBack.  Hope slides covers most of the aspects so no more writings. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_5113980" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/jkumaranc/logback-and-slf4j" title="LOGBack and SLF4J"&gt;LOGBack and SLF4J&lt;/a&gt;&lt;/strong&gt;&lt;object height="355" id="__sse5113980" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=logbackandslf4j-100902101722-phpapp02&amp;amp;stripped_title=logback-and-slf4j" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5113980" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=logbackandslf4j-100902101722-phpapp02&amp;amp;stripped_title=logback-and-slf4j" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding: 5px 0pt 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/jkumaranc"&gt;jkumaranc&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-1130342712775643033?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/1130342712775643033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/09/next-generation-logging-slf4j-logback.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/1130342712775643033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/1130342712775643033'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/09/next-generation-logging-slf4j-logback.html' title='Next Generation Logging .... SLF4J + LOGBack'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-2752969590523940906</id><published>2010-09-03T01:07:00.001+10:00</published><updated>2010-09-03T01:59:23.352+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code style'/><category scheme='http://www.blogger.com/atom/ns#' term='CheckStyle'/><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>Code Review Series</title><content type='html'>These days I am back to work on code reviews with my peers and some  technical sessions. The code review series is more becoming a fun ride  now. I hardly worked together with the guys I have been doing code  review with, which means they all have different styles in doing  development. This is  probably the most&amp;nbsp; interesting part as the code  review complements back to  the reviewer learning something new always.  If we review the codes of the same guys we always work with then the  review process will become more stereotypes.&lt;br /&gt;&lt;br /&gt;Without  going into more lead up, I want to discuss my way of approaching code  reviews both as a reviewer and reviewee (Is there a word in English?). Thanks Thilina for sharing your list of code review points.&lt;br /&gt;&lt;br /&gt;Instead of dumping everything into single page, I created separate posts for separate sections.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-1-preparations.html"&gt;Code Review Series : Episode 1 : Preparations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-2-best-practices.html"&gt;Code Review Series : Episode 2: Best Practices&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-3-patterns.html"&gt;Code Review Series : Episode 3: Patterns Discussions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-4-exception.html"&gt;Code Review Series : Episode 4: Exception Handling&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-5-non-source-files.html"&gt;Code Review Series : Episode 5: Non source files and Test cases&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hope this gonna help you all of you. I will keep updating this content whenever I do a code review....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-2752969590523940906?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/2752969590523940906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/09/code-review-series.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2752969590523940906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2752969590523940906'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/09/code-review-series.html' title='Code Review Series'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-2868869906279094730</id><published>2010-09-03T00:48:00.002+10:00</published><updated>2010-09-03T01:08:52.054+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code style'/><category scheme='http://www.blogger.com/atom/ns#' term='CheckStyle'/><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>Code Review Episode 5: Non source files and Test cases</title><content type='html'>Wrapping up the things with this post with test cases and non source files. Thought the code review comments are never ending, I just created these episodes so that I can always come back and update some of the sections whenever I find something important to be added.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Non Source Files Review&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&amp;nbsp;1) use project.properties to keep the environment setting and use filters tokens to replace it all over the places. This will lead us to keep just single file to modify all the environment setup and would avoid possible hassles during the post production maintenance.&lt;br /&gt;&lt;br /&gt;2) Use svn tags like $LastChangedBy, $LastChangedDate and $LastChangedRevision and remove your hard code name and email addresses. We follow shared code ownership.&lt;br /&gt;&lt;br /&gt;3) pom files needs to be clean, the dependencies should be alphabetical. Also use scope(test, provided, etc) of the dependency correctly. &lt;br /&gt;&lt;br /&gt;4) mvn/ant clean should clean everything other than the svn content(ideal).&lt;br /&gt;&lt;br /&gt;5) The number of times you so "svn stat" and "svn diff" should be higher than number of times you check facebook/cricinfo a day.&lt;br /&gt;&lt;br /&gt;6)  Always keep TODO.txt and README.txt in your trunk. If you think you have no time to do something but important to do later, then at least add them in TODO.txt. Also make sure with a help of README.txt any fresher can set up the system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-1-preparations.html"&gt;Code Review Series : Episode 1 : Preparations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-2-best-practices.html"&gt;Code Review Series : Episode 2: Best Practices&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-3-patterns.html"&gt;Code Review Series : Episode 3: Patterns Discussions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-4-exception.html"&gt;Code Review Series : Episode 4: Exception Handling&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-5-non-source-files.html"&gt;Code Review Series : Episode 5: Non source files and Test cases&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-2868869906279094730?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/2868869906279094730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/09/code-review-episode-5-non-source-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2868869906279094730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2868869906279094730'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/09/code-review-episode-5-non-source-files.html' title='Code Review Episode 5: Non source files and Test cases'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-1405421246317022408</id><published>2010-09-03T00:47:00.002+10:00</published><updated>2010-09-03T01:09:25.826+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code style'/><category scheme='http://www.blogger.com/atom/ns#' term='CheckStyle'/><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>Code Review Episode 4: Exception Handling</title><content type='html'>This probably the most critical section of this series. Exception handling is always an over looked aspect of programming by the new guys and the reason is obvious. They want to see their code to work but less worries about the exceptional scenarios. This is something we often noticed during the code reviews. Having worked at domain site for many years, I know the pains of underestimating the exception handling in programming. There are times I kept insisting on the exception handling again and again at the stand up meetings just because of this very reason. So Last week I came up with a presentation which covers most of the exception handling techniques targeted for java developers. But its still applicable for other users too. I shared the slides towards the end of this post.&lt;br /&gt;Now lets get into the points we found during our code review discussions.&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: white;"&gt;&lt;ul&gt;&lt;li&gt;Not worried about the unchecked exception:&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;Developers are happy about the successful compilation and happy scenarios,  but often miss the unchecked exceptions. Yes its correct that we need to  prevent the unchecked exception from happening rather than handling  them. We do that for most of the runtime exceptions like NullPointers.  But what we miss out is the runtime exceptions caused by third party  APIs. The single most vulnerable API is the ORM API like hibernate or  JPA. These ORM APIs wrap all the database exceptions into unchecked  exceptions and let the default framework's exception handlers to handle  them. But we don't always do that in the MVC architecture where our View  can be Vaadin, GWT, Lift or SpringMVC, so developers have the  responsibility of handling these unchecked exceptions.&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;ul&gt;&lt;li&gt;We catch the Exception but not the Throwable :&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;For most of us, handling exception means just catch the "java.lang.Exception",  again we tempt to forget the unchecked exception and we may  UNINTENTIONALLY skip handling the unchecked exceptions. So I recommend  to catch "Throwable" instead of "Exception" in these cases.&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;ul&gt;&lt;li&gt;What do we do with the caught exception?&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;This  is the clueless question for us. What do we do when catching the  exception? I can see an error log entry with dumping the stack trace.  And if we are compelled to return something, then we return null or  empty object in this case. But this is most of the times the wrong way  to do. We catch exception to do certain things. Logging is one thing.  But we still may have to either propagate a checked wrapped exception  back with a proper message OR do another method call for the erroneous  case OR return an acceptable value for the erroneous case.&lt;/div&gt;&lt;div style="background-color: white;"&gt;To continue  on this point, the developer should decide that whose responsibility to  handle the exception. Is it that method's responsibility or caller's?&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;ul&gt;&lt;li&gt;Error Logging&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;logger.error("error message for the case : ", e);&lt;/div&gt;&lt;div style="background-color: white;"&gt;This way, the error log will have the complete stack printed, enabling the support person to troubleshoot it easily. Always accompany a useful message together with the stack trace.&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;ul&gt;&lt;li&gt;Do not print stack trace for genuine error scenarios&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;If the error  case is genuine and if its something which could happen day to day  basis, then we should try to avoid throwing such error in the code first  of all. If its not possible then at least try not to log the entire  trace but only an error/warn message in the logs. For example user not found exception doesn't require a complete stack trace.&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;ul&gt;&lt;li&gt;Error Propagation &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;For MVC  cases, certain exceptions can be propagated all the way back UI error  handlers. Which doesn't mean you don't need to catch the exception in  between. We still need to catch the exception and wrap them into module  specific exceptions. In this way, you can still keep the module  decoupling concept unbroken.&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="background-color: white;"&gt;Sinful stack traces in UI!&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="background-color: white;"&gt;How many  times we have seen stack traces in the UIs? Its another sin in  programming. We need to use the framework's exception handlers well for  these situations. Most of the web/UI frameworks offer exception handlers  where you can configure error messages/pages for different error  coders, error messages and exception class types. Use it appropriately. SpringMVC, JSF, Vaadin, GWT like tools have nice way doing things.&lt;/span&gt;&lt;br /&gt;&lt;div style="background-color: white;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_5113696" style="width: 425px;"&gt;&lt;b style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/jkumaranc/exceptions-irst" title="Exceptions irst"&gt;Exceptions irst&lt;/a&gt;&lt;/b&gt;&lt;object height="355" id="__sse5113696" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=exceptionfirst-100902094454-phpapp02&amp;amp;stripped_title=exceptions-irst" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5113696" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=exceptionfirst-100902094454-phpapp02&amp;amp;stripped_title=exceptions-irst" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="padding: 5px 0pt 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/jkumaranc"&gt;jkumaranc&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-1-preparations.html"&gt;Code Review Series : Episode 1 : Preparations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-2-best-practices.html"&gt;Code Review Series : Episode 2: Best Practices&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-3-patterns.html"&gt;Code Review Series : Episode 3: Patterns Discussions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-4-exception.html"&gt;Code Review Series : Episode 4: Exception Handling&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-5-non-source-files.html"&gt;Code Review Series : Episode 5: Non source files and Test cases&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-1405421246317022408?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/1405421246317022408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/09/code-review-episode-4-exception.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/1405421246317022408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/1405421246317022408'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/09/code-review-episode-4-exception.html' title='Code Review Episode 4: Exception Handling'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-3952642049247876814</id><published>2010-09-03T00:43:00.002+10:00</published><updated>2010-09-03T01:09:41.905+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code style'/><category scheme='http://www.blogger.com/atom/ns#' term='CheckStyle'/><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>Code Review Episode 3: Patterns Discussions</title><content type='html'>In this post lets discuss some of the patters we discuss during the code review.&amp;nbsp; I try to avoid the normal GOF patterns since those are pretty obvious design level patterns. Lets get into the discussion.&lt;br /&gt;&lt;br /&gt;1) Use the code review to learn things. Ask your doubts and check whether the way you have done is correct or not. When my work getting reviewed, those code review sessions normally go for more than 6 or 7 hours. we start with one code segment and start discussing deeper and deeper. As usual I always try to question the comments only to create a discussion around it. That will make both of us to get convinced with what we do. Most of the code patterns I learned were during the code reviews with my mentor. That's where we learn how to apply number of patterns together more effectively. We need to be open always, admit the fact that we don't know everything, that's when the good rapport between the reviewer and reviewee will be created. The &lt;a href="http://blogs.sun.com/jkumaran/entry/state_design_pattern_using_java"&gt;this post&lt;/a&gt; was written after an immensely discussed code review with my mentor long ago&lt;br /&gt;&lt;br /&gt;2) Separate the ORM layer and domain objects(Especially entities), preferably two different modules. This was one of the mistakes during our earlier days. We always mixed core logic with ORM codes like hibernate. But its always nice to separate. But again its subjective to the design and the standard practice your cooperate following.&lt;br /&gt;&lt;br /&gt;3) Understand the &lt;a href="http://en.wikipedia.org/wiki/Open/closed_principle"&gt;Open Closed Principle&lt;/a&gt; :  We can use it for our core business cases. &lt;br /&gt;&lt;br /&gt;4) &lt;a href="http://en.wikipedia.org/wiki/Double_dispatch"&gt;Double dispatch&lt;/a&gt; : The process of making a choice is not centered in a single code block, but spanned across nicely through the responsibility structure. Complementary it improves the performance too. We tried these after a particular code review. It was really interesting. One of those things makes programming really fun.&lt;br /&gt;&lt;br /&gt;5) &lt;a href="http://en.wikipedia.org/wiki/Null_Object_pattern"&gt;Null Object Pattern&lt;/a&gt; : Something we all should be aware of it. It can nicely mingle with State and Strategy patterns. For more info &lt;a href="http://blogs.sun.com/jkumaran/entry/state_design_pattern_using_java"&gt;click here&lt;/a&gt; ;)&lt;br /&gt;&lt;br /&gt;I will keep adding other comments when I come across ... Lets move to the next Major topic Exception Handling.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-1-preparations.html"&gt;Code Review Series : Episode 1 : Preparations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-2-best-practices.html"&gt;Code Review Series : Episode 2: Best Practices&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-3-patterns.html"&gt;Code Review Series : Episode 3: Patterns Discussions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-4-exception.html"&gt;Code Review Series : Episode 4: Exception Handling&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-5-non-source-files.html"&gt;Code Review Series : Episode 5: Non source files and Test cases&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-3952642049247876814?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/3952642049247876814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/09/code-review-episode-3-patterns.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3952642049247876814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3952642049247876814'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/09/code-review-episode-3-patterns.html' title='Code Review Episode 3: Patterns Discussions'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-3471282000814564718</id><published>2010-09-03T00:42:00.002+10:00</published><updated>2010-09-03T01:11:09.502+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code style'/><category scheme='http://www.blogger.com/atom/ns#' term='CheckStyle'/><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>Code Review Episode 2: Best Practices</title><content type='html'>Fine, in our last post we discussed about the kind of preparations both the reviewer and reviewee should go through before starting the code review. Lets jump into the code review points in this post.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue; font-size: large;"&gt;Good Coding Practices&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1) Use the access modifiers appropriately. Often seen protected variables unnecessarily. Use private always and change only if needed. Same for setters. &lt;br /&gt;&lt;br /&gt;2) Avoid having setters and use private constructors for immutable value objects(Under the circumstances). The point is, always think twice when writing a constructor a public and private, writing setter, if setter needed then can it be private (These decisions influenced by both your domain driven design and your ORM tool). But all you need is a valid reason!&lt;br /&gt;&lt;br /&gt;3) Remove unnecessary labeling. Sometimes I see a labeled breaks for even a normal single loop statement.&lt;br /&gt;&lt;br /&gt;4) Do not leave empty methods with just a TODO statement. Always throw an UnsupportedOperationException for those non-implemented methods. This will allow handling possible mistakes in future. Anyway having TODO is equally important too.&lt;br /&gt;&lt;br /&gt;5) Use static value imports. This makes code more cleaner. Remember accessing static content via instance variable is a sin.&lt;br /&gt;&lt;br /&gt;6) Don't over document your internal codes. Document the interfaces well, but not necessarily with the same level of details for the classes. Use of good naming to methods covers 80% of the documentation. Parameter details are to be documented ONLY if they have limitations and boundaries. Its better to explain the possible exceptions (Both checked and unchecked) in the javadoc since the caller will always have to manage them well. We have a big post coming on exceptions anyway.&lt;br /&gt;&lt;br /&gt;7) I am not a big fan of detailed class document(unless you are an Apache/Sun/Android like open source/API developer). Just mentioning the responsibility of the class is more than enough for most of the cases.&lt;br /&gt;&lt;br /&gt;8) Use the loggers cleanly. DO NOT use system outs for logging purposes. For transactions, try to use correlations with NDP push or MDC like techniques.&lt;br /&gt;&lt;br /&gt;9) SQL query Strings needs to be private static final global variable but the placement can well be just above the method declaration(Though its against the standard practice). I find it easily readable and sensible.&lt;br /&gt;&lt;br /&gt;10) Use isDebugEnabled or isInfoEnabled before logging. You can always create shortcut keys to create these clauses. This is vital otherwise all these debug method call's Strings will get manipulated even if the log level is INFO.&lt;br /&gt;&lt;br /&gt;11) When you use logs, use meaning full information. Its always good to log the dynamic data related to the particular flow than just having static comment. Remember while developing high traffic applications, do not use too many logs pertained to a single transaction. This will affect the performance and also make the log files big and hand to trace.&lt;br /&gt;&lt;br /&gt;12) One of the common mistakes is the lack of Null pointer checks. The major reason for this mistake is the lack of anticipation of the flow in real time. Always WORRY about the possible Null values, check and handle them such scnarios. Getting NullPointerException in a production system is not tolerable at ALL.&lt;br /&gt;&lt;br /&gt;13) For String appending, I prefer StringBuilder ahead of StringBuffer in toString methods, since the later's thread safety will affect the performance.&lt;br /&gt;&lt;br /&gt;14) Do not use unnecessary packages or long package names. Having just one class under a package may not make sense most of the times. For me, all the interfaces should come under the root package of the module and the implementations will come and under a child package. Exceptions also should be kept under root package.&lt;br /&gt;&lt;br /&gt;15) Move the reusable code segments into a single module and use in all other places as a (library)jar. If you have a commons modules, then add the module there even. Remember to maintain the generosity when you make a module reusable.&lt;br /&gt;&lt;br /&gt;16) Always import classes on demand, don't import the complete package in a class.&lt;br /&gt;&lt;br /&gt;17) For all the domain objects, its better to have the inserted_date_time, last_updated_date_time and author fields.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Fine I will keep adding&amp;nbsp; the points whenever I come across any. But for now we will move to some patterns discussions during the code review in the next post.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-1-preparations.html"&gt;Code Review Series : Episode 1 : Preparations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-2-best-practices.html"&gt;Code Review Series : Episode 2: Best Practices&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-3-patterns.html"&gt;Code Review Series : Episode 3: Patterns Discussions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-4-exception.html"&gt;Code Review Series : Episode 4: Exception Handling&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-5-non-source-files.html"&gt;Code Review Series : Episode 5: Non source files and Test cases&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-3471282000814564718?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/3471282000814564718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/09/code-review-episode-2-best-practices.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3471282000814564718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3471282000814564718'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/09/code-review-episode-2-best-practices.html' title='Code Review Episode 2: Best Practices'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-3088703534883102860</id><published>2010-09-02T15:25:00.005+10:00</published><updated>2010-09-03T01:10:06.082+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code style'/><category scheme='http://www.blogger.com/atom/ns#' term='CheckStyle'/><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>Code Review Episode 1 : Preparations</title><content type='html'>&lt;b&gt;&lt;span style="color: blue; font-size: large;"&gt;Preparations For The Reviewer&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;1) Checkout the code and get your IDE (IntelliJ in my case) setup with  the source tree. This is especially important for the reviewer since he  or she might not have worked on the project before. But reviewer doesn't  have to build the system anyway.&lt;br /&gt;&lt;br /&gt;2) Get the key design artifacts. Its better to have the component and  class diagrams. Again its not important to study the design before the  session. You can always ask questions from reviewee and then tell your suggestions.&lt;br /&gt;&lt;br /&gt;3) Have a peace of mind before the session. Always plan the session in the  morning. And do not chat or talk with anybody else other than the reviewee  during the time.&lt;br /&gt;&lt;br /&gt;4) Reviewer and Reviewee relationship is crucial. Never feel you are  superior to reviewee and don't be hesitant to ask suggestions from reviewee. Always remember its the reviewee who knows the code better than you. Set up the fun environment. Code reviews  are supposed to be fun and should be interactive.&lt;br /&gt;&lt;br /&gt;5) Make sure you do always  explain the reasons and justifications. Its important to keep the  reviewee excited about what he or she is getting out of the review, keep  his or her morale always high.&lt;br /&gt;&lt;br /&gt;6) Set the non threatening context, make sure the peer feels comfortable  during the code review. Code review is more like a pair programming  anyway. And its important reviewee asking you a lot of questions and doubts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7) Be open to your suggestions. You may be wrong and make sure you are ready to correct when you find you did tell something wrong&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue; font-size: large;"&gt;Preparations For The Reviewee&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;1) Remove unnecessary System outs and stack trace prints (The ones you would have put for your debugging purposes). &lt;br /&gt;&lt;br /&gt;2) Use the check-style and format your code. Do not set the wrong  impression by leaving non-formatted code. Also keep the codes within  your right margin limit.&lt;br /&gt;&lt;br /&gt;3) Commit everything you have done.&lt;br /&gt;&lt;br /&gt;4) Ensure the non source files like pom.xml/build.xml, README.txt and properties files are well formatted and documented with correct versions.&lt;br /&gt;&lt;br /&gt;5) Use the "Analise Code" option in IDEA (Other IDEs should have similar tools) and correct things as much as you can.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6) Prepare yourself to ask questions and doubts. Reviewers like when people ask them questions and doubts. Just relax and open up.&lt;br /&gt;&lt;br /&gt;So lets start the code review! &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-1-preparations.html"&gt;Code Review Series : Episode 1 : Preparations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-2-best-practices.html"&gt;Code Review Series : Episode 2: Best Practices&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-3-patterns.html"&gt;Code Review Series : Episode 3: Patterns Discussions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-4-exception.html"&gt;Code Review Series : Episode 4: Exception Handling&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2010/09/code-review-episode-5-non-source-files.html"&gt;Code Review Series : Episode 5: Non source files and Test cases&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-3088703534883102860?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/3088703534883102860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/09/code-review-episode-1-preparations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3088703534883102860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3088703534883102860'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/09/code-review-episode-1-preparations.html' title='Code Review Episode 1 : Preparations'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-4248093710213887759</id><published>2010-08-12T17:25:00.001+10:00</published><updated>2010-08-12T17:25:56.233+10:00</updated><title type='text'>Scala And Me!</title><content type='html'>Stay tuned ....!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-4248093710213887759?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/4248093710213887759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/08/scala-and-me.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/4248093710213887759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/4248093710213887759'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/08/scala-and-me.html' title='Scala And Me!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-189912782283047075</id><published>2010-08-12T16:07:00.007+10:00</published><updated>2010-08-12T20:16:02.079+10:00</updated><title type='text'>Crap!</title><content type='html'>&lt;b&gt;DISCLAIMER: The events depicted in this post are fictitious and any similarity to any person living or dead&amp;nbsp; is merely coincidental&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"You know crap, can you just stop whining and enjoy the the evening. Remember Rule One? No office stuff after hours"&lt;br /&gt;"Oh yeah, its my choice today, ok what would you like haa?"&lt;br /&gt;"You won't change, will you moron?, mmm may be "Malibu and Pineapple"? "&lt;br /&gt;"Perfect! Smoky Martini will do.."&lt;br /&gt;"That's expensive, go for something simple"&lt;br /&gt;"You don't know Jess, its a mixed day at work today, I am bit pissed off"&lt;br /&gt;"Jeez, Listen, Remember Rule One?"&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;"I got fired!" &lt;br /&gt;"What ... ?"&lt;/blockquote&gt;&lt;br /&gt;Jessie is always specific on her rule number one from the day one we started. No office talks after office hours. But then she had to remind me the rule every time we drop in for dinner. However one can't just leave everything happened during the most exciting hours of a day, yeah of course today is different!&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"You know Mr Sully... "&lt;br /&gt;"No formalities please, Call me Jake"&lt;br /&gt;"Ok I would like you to remind that this is not your design discussion or a tea break. We are here to discuss your conduct during the project tenure. It has been brought to my attention that you are not following our newly introduced protocols. Do you have anything to add Mr Sully?"&lt;br /&gt;"Process? well, I do follow ... at times"&lt;br /&gt;"You see, your design artifacts coverage is 50% which is 15% below of our acceptable target. You have been changing the design without following the formal process of design changes and impact analysys, in the event your actions lead to overall project budget increase of 8% and not to mention about the risk you imposed"&lt;/blockquote&gt;&amp;nbsp;He gave me this nicely bound review finding document with all the evidences and records. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Well I do apologize if it actually happened, But you see, this work is more to do with our individual judgment and instincts under the specific circumstances and domain experiences. We can't just follow everything on the piece of shit ... sorry .. paper, its not what Agile tells you, did you sign Agile Manifesto? We need to look at the holistic view of the domain, the business ... everything"&lt;br /&gt;"I don't know what you talking about, well I will keep a note about the Agile and look at it on my next available time slot. All I want is to follow everything as per process and keep yourself safe always. Why do you care of holistic view, after all its not your part of job, I just read your job description"&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;Not my business haa? Then who else? hope its not yours?&lt;br /&gt;&lt;br /&gt;Well neither mine! Do not change the topic, have you recorded your circumstances which lead to your process breakdowns. We can consider them if you have those evidences.&lt;br /&gt;&lt;br /&gt;"You know what, I am known for my patience, so I suggest we end this conversation here, I don't have evidences, I never bring my cam-coder when I go to toilet. Thank you"&lt;/blockquote&gt;&lt;br /&gt;I just stood up and returned to my seat. OMG,&amp;nbsp; what did happen to me, couldn't I just listen and answer all the questions with patience. Am I not questionable? What makes me thinks I am larger than all these craps, will I ever learn to work with different people? Damn...Terrible Me!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"So wholemeal bread with peanut butter for lunch, You never change, Debra?"&lt;br /&gt;"So you do Jake, you look so happy today? Is it ... Jessy?"&lt;br /&gt;"Nah nah, Had some good moments in the morning at Vodafone"&lt;br /&gt;"Oh yea, heard our DSL is well received there ... Is it?"&lt;br /&gt;"Well thanks to you, It's very satisfying. I still remember the days I was just figuring out a simple property DSL with ANTLR. But implementing a fully fledged IOC container with our own DSL... We can be proud, can't we"&lt;br /&gt;"Not to forget Scala too, these are the things keep us moving"&lt;br /&gt;&lt;br /&gt;"Hopefully there won't be any glitches, no complacency please ... and don't ever be too emotional with what you do, prepare yourself for next work .. haa"&lt;br /&gt;"Oh yeah of course! gotta check my mails, catcha" &lt;/blockquote&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;i&gt;Dear Mr Jake Sully,&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;i&gt;You are kindly requested to attend our project review meeting at 4.00 pm. Project architect's presence is compulsory as per our process. Please bring supporting materials in case if you are to differ our review findings.&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;i&gt;Yours Sincerely,&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;i&gt;Jim Carry&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;i&gt;Manager of Process and Protocols&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;"So you did this Anna?"&lt;br /&gt;"That's right, I did this!"&lt;br /&gt;"Awesome!, really impressed, seriously .."&lt;br /&gt;"What? Did you think I am yet another customer who listens to what ever the craps the vendors tell, we do think.. you maggot!"&lt;br /&gt;"Well oh yeah, I didn't mean it, its just an excitement when I saw you did this. I never expected a customer to configure our own DSL without us being consulted, its nice you done this on your own"&lt;br /&gt;"Oh well, you guys are not special, you are yet another dancing and singing organic crap in this world, what made you think I wouldn't understand your DSL or whatever?"&lt;br /&gt;"No no, its just my error of judgment, really appreciate you did this" &lt;br /&gt;"Well you did, good for you!"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I still can't believe how well this project is progressed sofar. There were many doubters at the beginning. People thought we are trying too much. But we believed in what we did, had our own daemons to convince ourself and had the right team to make it success including the customer. I should call Jessy for dinner to celebrate this.&lt;br /&gt;&lt;blockquote&gt;"Today?"&lt;br /&gt;"No time like the present, Manhattan Inn, pick you on the way?"&lt;br /&gt;"Nice mood ha?"&lt;br /&gt;"Know why?"&lt;br /&gt;"Mmmm got fired?"&lt;br /&gt;"What?"&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-189912782283047075?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/189912782283047075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/08/crap.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/189912782283047075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/189912782283047075'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/08/crap.html' title='Crap!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-8493203546719238253</id><published>2010-05-29T18:12:00.001+10:00</published><updated>2010-08-12T11:50:25.358+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><title type='text'>How to use iPhone tethering to wifi only iPad?</title><content type='html'>Well, now I have the "&lt;a href="http://en.wikipedia.org/wiki/Matrix_of_Leadership"&gt;Creation Matrix&lt;/a&gt;" finally. The &lt;a href="http://www.apple.com/ipad/"&gt;iPad &lt;/a&gt;! Wifi only model which I bought this week is now a revelation and certainly creating a vibe (among whom? ;) ).&amp;nbsp; One of my friends always keeps telling its just my show-off but its not worth a money. She could well be right partially, but then I tell you, iPad is an experience. Sofar the experience is cool and I don't regret what so ever! &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://multiplayerblog.mtv.com/wp-content/uploads/2010/03/ipad_releasedate.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="175" src="http://multiplayerblog.mtv.com/wp-content/uploads/2010/03/ipad_releasedate.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Ok, my model is wifi only 16G model. It doesn't support Apple's so-called micro SIM. But then who cares ?. I have an iPhone with virtually unlimited data package. All I have to do is to tether my iPhone internet to iPad via wifi. Although &lt;a href="http://www.networkworld.com/community/node/58238"&gt;Steve Jobs says no&lt;/a&gt;, hackers always have the answer !&lt;br /&gt;&lt;br /&gt;The steps are pretty simple, here we go...&lt;br /&gt;&lt;br /&gt;1) &lt;a href="http://www.iphoneheat.com/2010/05/jailbreak-iphone-os-3-1-3-with-spirit-jailbreak/"&gt;Jailbreak your iPhone&lt;/a&gt;, there are many ways to do so. My iPhone is 3.1.3 version. So my friends recommeded to use Spirit and I did. No issues. The jail break is a catwalk. I used windows vista BTW.&lt;br /&gt;&lt;br /&gt;2) &lt;a href="http://justanotheriphoneblog.com/wordpress/iphone-tips/how-to-change-the-iphones-root-password"&gt;Change your root password&lt;/a&gt;. The procedure is simple. Install terminal application, go to super user and change the password. Its unix under the hood anyway. This step is important, otherwise the phone will get infected with worms I heard.&lt;br /&gt;&lt;br /&gt;3) add &lt;a href="http://sinfuliphonerepo.com/"&gt;http://sinfuliphonerepo.com&lt;/a&gt; to your Cydia app and get the Free (That's the&amp;nbsp; nicer way to put) mywi application version.&lt;br /&gt;&lt;a href="http://farm5.static.flickr.com/4007/4493160114_f34ab870e5.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://farm5.static.flickr.com/4007/4493160114_f34ab870e5.jpg" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;4) search MyWi and install the sinful version. Remember there is another non free(u know what !) version. You can still use it for 10bugs if you are interested.&lt;br /&gt;&lt;br /&gt;5) click the MyWi app and enable the thering , boom, it just works.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Limitation&lt;/b&gt;&lt;br /&gt;1) WEP is not working for me, which means my iPhone broadcasting an unsecured network, so anybody can connection, which you got to be careful.&lt;br /&gt;2) FYI : You don't need to jailbreak your iPad here. And people say its not safe either.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-8493203546719238253?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/8493203546719238253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/05/how-to-use-iphone-tethering-to-wifi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/8493203546719238253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/8493203546719238253'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/05/how-to-use-iphone-tethering-to-wifi.html' title='How to use iPhone tethering to wifi only iPad?'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4007/4493160114_f34ab870e5_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-3184856902102562237</id><published>2010-04-25T01:08:00.008+10:00</published><updated>2010-04-26T16:22:48.073+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='contemporary'/><category scheme='http://www.blogger.com/atom/ns#' term='story'/><title type='text'>I am Jake in short JK .. errrh.. Jessie</title><content type='html'>&lt;span style="font-size: small;"&gt;"The next train to &lt;a href="http://en.wikipedia.org/wiki/Flinders_Street_Station"&gt;Flinders Street&lt;/a&gt; station via the city loop will be departing at five", the recorded voice was played when I pressed the green button. I sat on the near by bench which is inside the safety zone. We are tipped as soft-targets for crime and advised to stay within the safety zones in railway stations. &lt;a href="http://en.wikipedia.org/wiki/Epping_railway_station,_Melbourne"&gt;Epping &lt;/a&gt;station is in its usual quietness. It’s a Saturday morning pro spring weather of 21 degrees, more than enough for me to leave my pullovers inside the car.  Some drunken teenagers are playing Footy using empty VB beer cans at the platform. Two of them look like Vietnamese; another Lebanon and an African origin together with couple of native Aussies. They all talked in typical Aussie slang which something I am still struggling to adapt even after this many months in Melbourne. I am visiting my sister’s home at &lt;a href="http://en.wikipedia.org/wiki/Dandenong,_Victoria"&gt;Dandenong &lt;/a&gt;to attend my niece's 16th birthday party.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Beside me, an old lady playing the yesterday's MX paper’s crossword puzzle. Though she finished most parts of it, she still stuck with one last word I guess. The word starting with ‘G’, forth box is ‘O’ and ending with ‘E’. No idea for me on what that word is anyway.  The very next page has a coverage on the tenth year of commemoration ceremony of Serbian mass killings and another exclusive on a nude celebrity scandal. The lady doesn't appear too much bothered about this page. She is fully into the puzzle.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;The train arrived at the platform with near empty. I got into the first compartment as usual. The teenagers have ceased their game, lit a cigar and shared it. Smoking and drinking are considered very normal here in Australia. My in-law used to tease me "You teetotalers don't have a place here mate". Once in a party, when I said I am a teetotaler, my friend offered me a beer! Unsurprisingly for them beer is just another form of water. Enough with the embarrassments, I now changed a bit and even become a big fan of South African Red Wine and getting to know few whiskey brands to cope up ! Now I don't drink whiskey but wines!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;I heard the last train announcement before the departure. I started reading the novel which I bought last week. &lt;a href="http://en.wikipedia.org/wiki/The_Namesake"&gt;"The Namesake"&lt;/a&gt;, a contemporary Booker price winner Jhumba Lahiri novel, my friend who recently migrated to New Jersey recommended to read this, claiming every migrant from Asia to western countries should keep a copy of it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_rnnosU03F6U/S9MaA4yOMFI/AAAAAAAAAjU/VA3j8U6mEjA/s1600/bxp51287.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_rnnosU03F6U/S9MaA4yOMFI/AAAAAAAAAjU/VA3j8U6mEjA/s200/bxp51287.jpg" width="191" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;When the train was just about to leave, I closed down the book and stared outside. I noticed a girl running towards the train waving her hand to stop the train. While running, her jacket and handbag slipped in the floor. She said something which must be "Ow shit". Train driver too must have seen her, so he stopped the train. She now bent down, collected all the things on the ground, walked into our compartment. On the way, she gave a big thumb up to the driver, had a big laugh too. Typical Australian!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Incidentally she straightaway rushed to the seat just in front of me. She said a usual "Hi, How you doing?" to me, I delayed my response, confused on whether to say "Good, Your Self?" or "Good, How you doing " back. Most of the times people don't care what we respond anyway.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Lalor station is reached. Few more boarded. Epping line must be the quietest in Victoria in terms of commuters. I moved to window seat to give a room for the guy just got in. I hate the cigar smoke smell; always keep away from the guys jumping into trains. They bring that bad smell with them. He smiled at her, bantered something about the weather, and then tuned his iPod in. By then she already pulled her sweater out. Now although I keep the book open in my hands, I couldn't concentrate on it. I started staring at her completely. She wears a long V cardigan with lace tank top inside. She is little fatter and shorter than most of the Aussie girls of her age. She occupied the whole front seat with her pullover, handbag and jacket. Interestingly she has a &lt;a href="http://en.wikipedia.org/wiki/Bridge_piercing"&gt;bridge piercing&lt;/a&gt; with silver pearl. Her water-shine diamond lipstick matches well with her piercings and dress. She was looking outside the window, closely watching the traffic in the high street while humming a song. I think its lady gaga. The lady has not found that word yet. Reservoir reached.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;She suddenly turned at me, not sure she realized me staring at her. She gently smiled. I can't remember the rule number three. But still went ahead with my own way.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;"Rocking weather, ain't it? U guys having an outing today?"&lt;/i&gt; I knew she is traveling alone. So using the word 'guys' to single woman is little odd. Bottom line is I just don't know how to start a casual chat like this.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;"Yea, cool ha ... I’m going to &lt;a href="http://www.collingwoodfc.com.au/"&gt;Collingwood &lt;/a&gt;game, big game for us, isn’t ?"&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;I hardly follow &lt;a href="http://www.afl.com.au/"&gt;AFL&lt;/a&gt;, simply because I don’t understand the rules. It almost looks like Rugby. Then again I don’t understand Rugby either. All I know is, Aussies are mad at it and Victorians in particular. Fortunately, my niece is a &lt;a href="http://www.gfc.com.au/"&gt;Cats&lt;/a&gt; fan and she told some of her favorite players' names to me once.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;"Well, I follow cats, &lt;a href="http://en.wikipedia.org/wiki/Gary_Ablett,_Jr."&gt;Gary &lt;/a&gt;is good  ..."&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;"Fair enough! He is a legend, sexy too!”&lt;/i&gt;... No wonder why there are many sex scandals in AFL. All the women are behind these footy players and when money and women combine, that's hunting ground for paparazzis.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;"Anyway you Indians are cricket crazies, ain't u, I stopped watching the game after Warnee retired"&lt;/i&gt; ... These days I never correct people when they mistakenly regard me as an Indian, at times I don't see the difference either !&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;"Well me neither, I love watching Tennis, Especially Roger’s back hand slices! "&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;"Roger? I couldn’t stop laughing when he cried at Australian Open last time, Such a shame for a player of his caliber”&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;"You know, he could be game's the greatest player ever, but still he sleeps with his wife, goes to toilet in the morning, kinda things all of us do usually  ... ha "&lt;/i&gt; .. I think I am little carried away by now. Some team coach made a similar comment on famous cricketer Sachin Tendulkar recently, but probably I timed it wrong.&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;"Coool, you are such an uncanny! Ohh Gee, What’s that book? Is that "Namesake", wow that's an awesome contemporary, I read it twice!”&lt;/i&gt;  Surprised with her gesture, I just looked at the book cover again and told &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;"Oh is it? I just started it”&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;"Yea its good, my ex boy friend gave it to me .. I loved it, specially that guy...Errgg what's his name? Ahh Gogol, the story line hangs around him and his family !”&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;"Don't go there please, I just started !, I don't like people telling the story of novels and movies !"&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;"Yea Yeah I won't reveal the story, you enjoy "&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;She looks little annoyed with my response. But then of course she doesn't know, I usually struggle to use right vocabulary at the right time. I know many of my colleagues tipped me rude and arrogant behind the backdrops. May be its time for me to change !&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.ilovephotoblogs.com/wp-content/uploads/2010/01/couple-kissing-romance-train-station.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://www.ilovephotoblogs.com/wp-content/uploads/2010/01/couple-kissing-romance-train-station.jpg" width="264" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;She didn't continue the conversation after that. I am back to "The Namesake" now, but my mind is still trying to read her. The fact that she read "Namesake" irked me a bit. She must be a literature fan, reads contemporaries. Now I started observing her little more deep. It’s a mistake to say she is beautiful. ‘Awesome’ could be the right word. She retouched her lips three times already. Also adjusts her cardigan to hide her mild cleavage time to time. Her lace tank is not enough to cover her entire beauty. Is she trying to show it or hide it? I don't know. But whenever she does it, it draws my attention and doesn't help myself taking out my eyes away. She doesn't wear long heels. I think she might just look gorgeous in traditional Indian Saree or even Sudidaar. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;The guy next to me already left and now only we three are at our compartment. That lady has given up the puzzle; the word could be a strange one for an Australian. I need to ask it from my father. Sometimes he may know it. Merry station reached.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;I couldn't stop myself thinking about her again. She read The Namesake, means she should have had some Indian connection through her ex boy friend. May be he is an Indian too. Who knows, she might have done some research study in Indian contemporaries. Does she know A R Rahman? Jeez, She should like Indian music and food then, the things I can't just live without. Who knows, she well may even get along with my parents too. My father is a conservative, but I am sure she is too good of a person to ignore. Mother might find it difficult to speak in English with her. But I can always teach English to my mother. So that too wouldn't be a problem. Having her will help me moving on with my new life too. In case my case gets rejected, she can still sponsor me. What if she does get to know that I am still living with my parents? Oh my goodness, I should never utter a word about it. May be I should settle my parents to separate place. Let’s see.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;She at times turned at me and smiled too or did she? I am not sure. I noticed she got a cute little dimple when she smiles.We are now two stations away from Collingwood. I don't even know her name. I am trying to recall what Will Smith was doing in "Hitch". Nothing comes to my mind now, blacked out. Shall I ask her name? May be "By the way, I am Jake, your good name please", damn, that's too old fashioned, what shall I say. Why don't I ask her for a coffee? mmm even I can join her for the match. I can skip niece's birthday party. Asking coffee would be fine, but is it too early. What if she says "U Bloody I!@#$ns", should I react politely then? Surely she is now single and free. She said she had ex which means she is free now. What was their problem. I am sure he was wrong. May be I will ask her name first and see how it goes. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Next station is Collingwood. Now only two of us are around in the compartment, the lady also left. Its strange on an AFL match day, the whole compartment is empty. Certainly the day meant for us. The weather is also neither too chill nor too hot, perfect for the situation. Now I decided. Let the party go, I am going to the game with her. How could I ask her name?  Mmm "Hey I am thinking of coming to the match, U free to join with me?" .. mmm that's bad, May be "Hey, I think it would be fun if we both went together "... Well, it sounds cool, but should I use 'go' or 'went' there? Damn my English. It’s my father who didn't teach me English well. Why everybody got good parents but not me? Forget it, the best thing is to introduce myself and then check with her whether I can join, Collingwood is nearing, Nothing to lose, lets askkk...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;"Hey maite.. I kinda thinking, why don't u join with me to the match, May be a coffee after that? Sure gonna be fun ! .Jessie !" -- she offered a handshake, I was shocked and stunned. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;“Holyyyyyy Shittttttt .. ” &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;“Excuse me .. ?”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;“No nothing, Oh yeahh, absolutely ... pleasure&amp;nbsp; is mine .. Jake in short JK . errrh.. Jessie !”&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;"Basic Principles, There are none" -- Quote from movie 'Hitch'&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-3184856902102562237?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/3184856902102562237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/04/i-am-jake-in-short-jk-errrh-jessie.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3184856902102562237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/3184856902102562237'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/04/i-am-jake-in-short-jk-errrh-jessie.html' title='I am Jake in short JK .. errrh.. Jessie'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_rnnosU03F6U/S9MaA4yOMFI/AAAAAAAAAjU/VA3j8U6mEjA/s72-c/bxp51287.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-2752596331303227905</id><published>2010-02-16T17:09:00.000+11:00</published><updated>2010-02-16T17:09:14.014+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mchoice'/><category scheme='http://www.blogger.com/atom/ns#' term='VAS'/><category scheme='http://www.blogger.com/atom/ns#' term='Vishma'/><category scheme='http://www.blogger.com/atom/ns#' term='Value Added Services'/><category scheme='http://www.blogger.com/atom/ns#' term='GSMA'/><title type='text'>Mobile Operators to work together on AppStore !</title><content type='html'>An interesting move by operators on Day 1 of GSMA Mobile world Congress yesterday. &lt;a href="http://www.macworld.com/article/146436/2010/02/jointappstoreproject.html"&gt;Twenty Four mobile operators are forming a Whole Sale Applications Community to avoid fragmenting the appstore market and all&lt;/a&gt;. I am hoping GSM Association will come up with detailed specifications to produce an industry wide de-facto standard on AppStore.&lt;br /&gt;&lt;br /&gt;Many might call it "butterfly effect"! Incidentally our team at &lt;a href="http://www.hsenidmobile.com/"&gt;hSenid Mobile&lt;/a&gt; is already marching towards this direction. &lt;a href="http://www.hsenidmobile.com/Vishma.php"&gt;mChoice Vishma&lt;/a&gt; which is an open source AppStore project kick starting tomorrow with our innaugural Face to Face meeting. It is really nice to see the move from those operators and hope we could really complement each other on this roadmap.&lt;br /&gt;&lt;br /&gt;But they are still missing a point and be reactive to Apple like IT houses' initiatives. Otherwise as &lt;a href="http://jk-blogging.blogspot.com/2010/01/vishma-democratization-of-app.html"&gt;I blogged in my earlier post&lt;/a&gt;, they should have considered the importance of having the store for VAS in addition to the "AppStore" which mainly consists the mobile phone applications but not services.&lt;br /&gt;&lt;br /&gt;The reason why I am really interested in &lt;a href="http://www.hsenidmobile.com/Vishma.php"&gt;mChoice Vishma&lt;/a&gt; is its unique feature of maintaining a store for VAS applications. Indeed it provides room for traditional AppStore systems too, but the WOW factor is on how Vishma enables VAS to be published in this store.&lt;br /&gt;&lt;br /&gt;Those who are really interested to know more on this, join us tomorrow at our first F2F meeting on Vishma ...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #274e13;"&gt;mChoince Vishma F2F Meet Up&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #274e13;"&gt;17th of February 2010 at GMT 1.00 PM to 2.00 PM.&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13;"&gt;&lt;/span&gt;&lt;span style="color: #274e13;"&gt;Barcelona Time - 2.00 PM to 3.00 PM&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13;"&gt;Singapore and Malaysian Time - 9.00 PM to 10.00 PM&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13;"&gt;Sri Lankan and Indian Time - 6.30 PM to 7.30 PM&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Those who wants to join us through webinar, please drop an email to &lt;a href="mailto:vishmaf2f@hsenidmobile.com"&gt;Vishma F2F&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cool !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-2752596331303227905?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.macworld.com/article/146436/2010/02/jointappstoreproject.html' title='Mobile Operators to work together on AppStore !'/><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/2752596331303227905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/02/mobile-operators-to-work-together-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2752596331303227905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2752596331303227905'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/02/mobile-operators-to-work-together-on.html' title='Mobile Operators to work together on AppStore !'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-6105725529594653092</id><published>2010-02-08T14:06:00.011+11:00</published><updated>2010-02-08T15:01:15.538+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hsenid'/><category scheme='http://www.blogger.com/atom/ns#' term='mchoice'/><category scheme='http://www.blogger.com/atom/ns#' term='Soltura'/><title type='text'>mChoice Soltura : Birds' Eye View  !!!</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;It was a blue moon Saturday, &lt;a href="http://balagowri.blogspot.com/"&gt;Saya&lt;/a&gt;, a passionate business architect who of course my good friend came to Skype. As usual we started a casual call which later turned out to be an interesting podcast which discusses &lt;a href="http://www.hsenidmobile.com/Soltura.php"&gt;hSenid Mobile&lt;/a&gt;'s new revolutionary product called &lt;a href="http://www.hsenidmobile.com/Soltura.php"&gt;mChoice Soltura&lt;/a&gt; ... Below is the podcast (It was a eavesdropped recording which I wasn't aware of !)&amp;nbsp; and the script we written after the call.&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;embed allowscriptaccess="always" flashvars="valid_sample_rate=true&amp;amp;external_url=http://59.163.254.24/download/SolturaPodcasts%20%281%29.mp3" height="52" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="http://www.odeo.com/flash/audio_player_standard_gray.swf" type="application/x-shockwave-flash" width="300" wmode="transparent"&gt;&lt;/embed&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JK: &lt;/b&gt;&lt;i style="background-color: #fff2cc; color: #073763;"&gt;&lt;span style="color: black;"&gt;Hai Maitee ... How u doing ? ... What you folks working on these days ?&lt;/span&gt;&lt;span __wave_annotations="" __wave_xml="Hai Maitee ... How u doing ? ... What you folks working on these days ?" class="__wave_paste" style="color: black;"&gt;&lt;/span&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i style="background-color: #fff2cc; color: #073763;"&gt;&lt;span style="color: #4c1130;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Saya :&lt;/b&gt; &lt;i style="background-color: #eeeeee; color: black;"&gt;Hi Dude.....I am doing Great...We've working on a new product called &lt;a href="http://www.hsenidmobile.com/Soltura.php"&gt;mChoice Soltura&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JK : &lt;/b&gt;&lt;i style="background-color: #fff2cc;"&gt;Err... Soltura .. that's catchy? What does it mean ?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Saya :&lt;/b&gt;&lt;span style="background-color: #f3f3f3; color: black;"&gt;&amp;nbsp; &lt;/span&gt;&lt;i style="background-color: #eeeeee; color: black;"&gt;Its a Spanish word meaning either Goodness or Freedom, in this case we mean the Mobile Freedom!&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;JK:&lt;/b&gt; &lt;i style="background-color: #fff2cc;"&gt;Well . that sounds interesting .. So .. what you guys coming up with this new product Err... Sol.. tura ?&lt;span __wave_annotations="" __wave_xml="Well . that sounds interesting .. So .. what you guys coming up with this new product Err... Sol.. tura ?" class="__wave_paste"&gt;&lt;/span&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Saya:&lt;/b&gt; &lt;i style="background-color: #eeeeee;"&gt;Its a &lt;a href="http://en.wikipedia.org/wiki/Value-added_service"&gt;Value Added Service&lt;/a&gt;s platform, in short we call it a &lt;a href="http://en.wikipedia.org/wiki/Value-added_service"&gt;VAS&lt;/a&gt; platform. Anyhow most importantly its not a traditional VAS platform. Soltura will open up an uncontested market space for the operator.&lt;span __wave_annotations="" __wave_xml="Its a value added services platform, in short we call it a VAS platform. Anyhow most importantly its not a traditional VAS platform. Soltura will open up an uncontested market space for the operator." class="__wave_paste"&gt;&lt;/span&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;JK: &lt;/b&gt;&lt;i style="background-color: #fff2cc;"&gt;Okey ... Let me try to recall what Value Added Service is first.... Its a kind of application or rather service which runs behind the teleco networks and offer various enterprise services to Mobile Users ?&lt;span __wave_annotations="" __wave_xml="Okey ... Let me try to recall what Value Added Service is first.... Its a kind of application or rather service which runs behind the teleco networks and offering various enterprise services to Mobile Users ?" class="__wave_paste"&gt;&lt;/span&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Saya :&lt;/b&gt; &lt;i&gt;&lt;span style="background-color: #eeeeee;"&gt;You are right JK, currently VAS services are enterprise services running on the telco back end. Most importantly we need to note that when we refer to something as VAS, we are not refering to the client applications running on the mobile handsets. You know, One of the most popular VAS application Type is the Voting Application. Thats the application which came into play when you actually voted for Susan Boyle in Britains Got Talent...JK I think you voted for her isnt it...&lt;/span&gt;&lt;span __wave_annotations="" __wave_xml="You are correct JK, currently VAS services are enterprise services running on the telco back end. Most importantly we need to note that when we refer to something as VAS, we are not refering to the client applications running on the mobile handsets. You know, One of the most popular VAS application Type is the Voting Application. Thats the application which came into play when you actually voted for Susan Boyle in Britains Got Talent...JK I think you  voted for her isnt it..." class="__wave_paste" style="background-color: #eeeeee;"&gt;&lt;/span&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;JK:&lt;/b&gt; &lt;i&gt;&lt;span style="background-color: #fff2cc;"&gt;Ha ha .. Yeah I did, She was awesome, wasn't she ? .. I think the concept of VAS is not something new.. We did involve in many of such VAS system designs and developments .. What I am little vary of is ... How does this Soltura bring a value to this conventional VAS models .. I think I am still missing the point .. yeah ? &lt;/span&gt;&lt;span __wave_annotations="" __wave_xml="Ha ha .. Yeah I did, She was awesome, wasn't she ? .. I think the concept of VAS is not something new.. We did involve in many of such VAS system designs and developments .. What I am little vary of is ... How does this Soltura bring a value to this conventional VAS models .. I think I am still missing the point .. yeah ? " class="__wave_paste" style="background-color: #fff2cc;"&gt;&lt;/span&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Saya :&lt;/b&gt;&lt;i&gt;&lt;span style="background-color: #eeeeee;"&gt; The conventional VAS applications of today are developed and deployed by the corporates, like IT houses and Media Moguls...With Soltura we break these barriers and provide a solution, which allows any expert subscriber to become a VAS provider. &lt;/span&gt;&lt;span __wave_annotations="" __wave_xml="The conventional VAS applications of today are developed and deployed by the corporates, like IT houses and Media Moguls...With soltura we break these barriers and  provide a solution, which allows any expert subscriber to become a VAS provider. " class="__wave_paste" style="background-color: #eeeeee;"&gt;&lt;/span&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;JK:&lt;/b&gt;&lt;i style="background-color: #fff2cc;"&gt; Wait a Sec ... I understand an IT house develops a VAS application, hosts it and commissions it live .. But I cannot understand how a subscriber can do these all ... Developing a VAS service, hosting and maintaining it throughout the life cycle is not something a joke right? It does need hell lot of effort, skill and ofcourse money, doesn't it ? &lt;span __wave_annotations="" __wave_xml="Wait a Sec ... I understand an IT house develops a VAS application, host it and commission it live .. But I cannot understand how a subscriber can do these all ... Developing a VAS service, hosting and maintaining it throughout is not something a joke, it needs hell lot of effort, skill and ofcourse money ... Doesn't it ? " class="__wave_paste"&gt;&lt;/span&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #eeeeee;"&gt;&lt;b style="background-color: white;"&gt;Saya:&lt;/b&gt;&lt;i&gt; As you mentioned in the current context each new application involves an incremental cost per application. Hence when the operator wants to introduce a new application they have to do a cost benefit analysis , feasibility analysis and so on. So to put it short we have analysed and eliminated the incremental cost per application in Soltura. So this provides an exciting opportunity for the operator to allow its expert subscribers to become VAS providers.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;i&gt;&lt;span style="background-color: #eeeeee;"&gt;Further, the subscriber who becomes the VAS provider does not have to worry about development, hosting or maintenance. Soltura will take care of all those complexities and provide the subscribers with a simple set of tools and platform to create the applications and use it. &lt;/span&gt;&lt;span __wave_annotations="" __wave_xml="As you mentioned in the current context each new application involves an incremental cost per application. Hence when the operator wants to introduce a new application they have to do a cost benefit analysis , feasibility analysis and so on. So to put it short we have analysed and eliminated the incremental cost per application in Soltura.  So this provides an exciting opportunity for the operator to allow  its expert subscribers to become VAS providers.&amp;lt;line&amp;gt;&amp;lt;/line&amp;gt;&amp;lt;line&amp;gt;&amp;lt;/line&amp;gt;Further, the subscriber who becomes the VAS provider does not have to worry about developement, hosting or maintainance. Soltura will take care of all those complexities and provide the subscribers with a simple set of tools and platform to create the applications and use it. " class="__wave_paste" style="background-color: #eeeeee;"&gt;&lt;/span&gt;&lt;/i&gt; &lt;/div&gt;&lt;br /&gt;&lt;b&gt;JK:&lt;/b&gt;&lt;i&gt;&lt;span style="background-color: #fff2cc;"&gt; Erhh .. I am still not sure on certain things .. Lemme take an example, last year in our University, we had our "Who is our next princess?" competition .. We wanted to have an 'American Idol' like voting model for this, where students can SMS their vote to their preferred girl ! .. But when we checked out, we found it very costly to build or even buy such voting service. So we eventually gave up the idea and went on with just ballot papers? Do you think the presence of a system like Soltura would have made any difference ?&lt;/span&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #eeeeee;"&gt;&lt;b style="background-color: white;"&gt;Saya:&lt;/b&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;Exactly! Your university application is actually aimed at relatively a small community. With the existing technology and the business processes its impossible for an operator to entertain such a request unless you are willing to pocket out that cost for that application or you can guarantee very large number of messages. In which case it would make it profitable for the operator. If soltura had been there an year ago, you could have gone to the web portal provided by soltura, choose voting as your type of application and then filled a simple set of web forms. Once youve done that - boom the application is all ready and live, you are good to go and tell your friends to start voting to select the "next princes" .&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;i&gt;&lt;span style="background-color: #eeeeee;"&gt;Another important point is that earlier you were actually asked to pay for the application, with Soltura, since you are the provider of the application you now stand a chance of receiving a share of the revenue generated by your application. So Soltura is actually a paradigm shift in the way we look and use VAS applications. &lt;/span&gt;&lt;span __wave_annotations="" __wave_xml="Exactly! Your university application is actually aimed at relatively a small community. With the existing technology and the business processes its impossible for an operator to entertain such a request unless you are willing to pocket out that  cost for that application or you can guarantee very large number of messages. In which case it would make it profitable for the operator. If soltura had been there an year ago, you could have gone to the web portal provided by soltura, choose voting as your type of application and then filled a simple set of web forms. Once youve done that - boom the application is all ready and live, you are good to go and tell your friends to start voting to select the &amp;quot;next princes&amp;quot; .&amp;lt;line&amp;gt;&amp;lt;/line&amp;gt;&amp;lt;line&amp;gt;&amp;lt;/line&amp;gt;Another important point is that earlier you were actually asked to pay for the application, with soltura, since you are the provider of the application you now stand a chance  of recieving a share of the revenue generated by your application. So soltura is actually a paradigm shift in the way we look and use VAS applications. " class="__wave_paste" style="background-color: #eeeeee;"&gt;&lt;/span&gt;&lt;/i&gt; &lt;/div&gt;&lt;br /&gt;&lt;b&gt;JK:&lt;/b&gt;&lt;i&gt;&lt;span style="background-color: #fff2cc;"&gt; Wow .. I am really stunned .... So u don't need any technical expertise, development efforts, maintanance nightmares, time to market or rather value and .... what more? ... Not even any capital investment .. What you need instead is to visit the hosted Soltura website, create your service .. in our case its "Who is our next princess" voting service, enter the nominees details and other stuff .. Click .. The system is live and running .. That's amazing .. Kudos to you folks &lt;/span&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;JK: &lt;/b&gt;&lt;i style="background-color: #fff2cc;"&gt;Hang on a sec .... I just realised that we don't even have to pay for this ! .. Jeeez Will I get paid for what I do in Soltura ? Well that's really cool ... So all what I have to do is use the Soltura to create the service ... More I get users .. More I get money Yeah ?&lt;span __wave_annotations="" __wave_xml="Hang on a sec .... I just realised that we don't even have to pay for this ! .. Jeeez Will I get paid for what I do in Soltura ? Well that's really cool ... So all what I have to do is use the Soltura to create the service ... More I get users .. More I get money Yeah ?" class="__wave_paste"&gt;&lt;/span&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Saya: &lt;/b&gt;&lt;i style="background-color: #eeeeee;"&gt;You ve hit the nail on the head JK - If you create an interesting application with a large following - you could actually be making some good money! So Its up to the subscribers to bring in the innovation!&lt;span __wave_annotations="" __wave_xml="You ve hit the nail on the head JK - If you create an interesting application with a large following - you could actually be making some good money! So Its up to the subscribers to bring in the innovation!" class="__wave_paste"&gt;&lt;/span&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_rnnosU03F6U/S2-GUklU_9I/AAAAAAAAAgg/Nyius3PPrQw/s1600-h/Soltura_value_curve.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="242" src="http://4.bp.blogspot.com/_rnnosU03F6U/S2-GUklU_9I/AAAAAAAAAgg/Nyius3PPrQw/s320/Soltura_value_curve.jpg" width="320" /&gt;&lt;/a&gt;&lt;b&gt;JK:&lt;/b&gt;&lt;i style="background-color: #fff2cc;"&gt; Yeah I get it ... So how about the operators ? What's their business cases here?&lt;span __wave_annotations="" __wave_xml="Yeah I get it ... So how about the operators ? What's their business cases here?" class="__wave_paste"&gt;&lt;/span&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Saya:&lt;/b&gt; &lt;i&gt;&lt;span style="background-color: #eeeeee;"&gt;Operators did not have the required technology and processes which can utilize these niche markets. So now with soltura they get an opportunity to unlock this uncontested VAS market space. So its entirely a new source of revenue.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;i&gt;&lt;span style="background-color: #eeeeee;"&gt;Another big advantage Soltura brings to the operator is that it allows the subscribers to become part of many small , but yet closely knit mobile communities. So when you are enjoying the services being provided by people very close to you, you don't feel like moving to another operator network. This can bring in the stickiness factor to the particular operator. We call this process as "Socializing the Mobile Network"&lt;/span&gt;&lt;span __wave_annotations="" __wave_xml="Operators did not have the required technology and processes which can utilize these niche markets. So now with soltura they get an opportunity to unlock this uncontested VAS market space. So its entirely a new source of revenue.&amp;lt;line&amp;gt;&amp;lt;/line&amp;gt;&amp;lt;line&amp;gt;&amp;lt;/line&amp;gt;Anorther big advatage soltura brings to the operator is that it allows the subscribers to become part of many small , but yet closely knit mobile communities. So when you are enjoying the services being provided by people very close to you, you dont feel like moving to another operator network. This can bring in the stickiness factor to the particular operator. We call this process as &amp;quot;Socializing the Mobile Network&amp;quot;" class="__wave_paste" style="background-color: #eeeeee;"&gt;&lt;/span&gt;&lt;/i&gt; &lt;/div&gt;&lt;br /&gt;&lt;b&gt;JK:&lt;/b&gt;&lt;i&gt;&lt;span style="background-color: #fff2cc;"&gt; That's two very important business cases which all the operators should be considering I guess.. So Soltura is introducing a new market place which had never been exposed to telcos although it was around the corner. .. plus it helps in a big way retaining the subscriber base by building these closely knit mobile communities ... I think this is serious business .. isnt it ?&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #eeeeee;"&gt;&lt;b style="background-color: white;"&gt;Saya: &lt;/b&gt;&lt;i&gt;Yes indeed! Its a blue ocean strategy! .... &lt;/i&gt;&lt;/div&gt;&lt;div style="background-color: #eeeeee;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;span style="background-color: #eeeeee;"&gt;JK its still not over yet. Soltura will open up an opportunity for the small and medium scale business enterprises to provide VAS services to their customers. So if you observe it closely, Soltura brings an Enterprise level feature within the reach of SMEs and the individuals.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JK:&lt;/b&gt;&lt;i&gt;&lt;span style="background-color: #fff2cc;"&gt; Oh my goodness .. Its getting bigger and bigger now, earlier it was the common subscriber and this time it's small and medium scale enterprises ... Let me guess a business case ... my corner DVD shop owner can actually create an Alert service in Soltura to notify on the new arrivals to the customers. If I can explore little more, I can even make an order of .. say "Avator" DVD by sending a SMS ... None of these need any CAPEX and OPEX to that shop owner ... I think this is where it really becoming BIG ... Sheer ground for businesses .. Right ?&lt;/span&gt;&lt;span __wave_annotations="" __wave_xml="Oh my goodness .. Its getting bigger and bigger now, earlier it was the common subscriber and this time it's small and medium scale enterprises ... Let me guess a business case ... my corner DVD shop owner can actually create an Alert service in Soltura to notify on the new arrivals to the customers. If I can explore little more, I can even make an order of  .. say &amp;quot;Avator&amp;quot;  DVD by sending a SMS ... None of these need any CAPEX and OPEX to that shop owner ... I think this is where it really becoming BIG ... Sheer ground for businesses .. Right ?" class="__wave_paste" style="background-color: #fff2cc;"&gt;&lt;/span&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Saya:&lt;/b&gt;&lt;i&gt;&lt;span style="background-color: #eeeeee;"&gt; Yes JK Very true, thats a very good example of how soltura can help an SME. Actually we are going to open up these services for innovations and believe me people out there are really smart, they will come up with use cases which we never imagined! Thats the sole purpose of building this platform.&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JK:&lt;/b&gt;&lt;i&gt;&lt;span style="background-color: #fff2cc;"&gt;&amp;nbsp; Impressed .. I am really really impressed ..... Thank god, I managed to squeeze you on this ... This is really an exciting product I guess ...How can I find more information on Soltura .. u guyes having any references or ... ?&lt;/span&gt;&lt;span __wave_annotations="" __wave_xml="Impressed .. I am really really impressed ..... Thank god, I managed to squeeze you on this ... This is really an exciting product I guess ...How can  I find more information on Soltura .. u guyes having any references or ... ?" class="__wave_paste" style="background-color: #fff2cc;"&gt;&lt;/span&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Saya:&lt;/b&gt;&lt;i&gt;&lt;span style="background-color: #eeeeee;"&gt; Yes JK we have an entire blog on this...check out &lt;/span&gt;&lt;a href="http://soltura.hsenidmobile.com/" style="background-color: #eeeeee;" target="_blank"&gt;soltura.&lt;/a&gt;&lt;a href="http://soltura.hsenidmobile.com/" style="background-color: #eeeeee;" target="_blank"&gt;hsenidmobile&lt;/a&gt;&lt;a href="http://soltura.hsenidmobile.com/" style="background-color: #eeeeee;" target="_blank"&gt;.com&lt;/a&gt;&lt;span style="background-color: #eeeeee;"&gt; &lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JK:&lt;/b&gt;&lt;i style="background-color: #fff2cc;"&gt; Excellent ... thats wonderfull job folks .. good luck .. Thanks for sharing the information maite .. have a good time .. Byeeeeeeee&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Saya : &lt;/b&gt;&lt;i style="background-color: #eeeeee;"&gt;Nice talking to you JK, Have a good Day! Bye&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-6105725529594653092?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/6105725529594653092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/02/mchoice-soltura-subscriber-created-vas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6105725529594653092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6105725529594653092'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/02/mchoice-soltura-subscriber-created-vas.html' title='mChoice Soltura : Birds&apos; Eye View  !!!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_rnnosU03F6U/S2-GUklU_9I/AAAAAAAAAgg/Nyius3PPrQw/s72-c/Soltura_value_curve.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-7667034383164015521</id><published>2010-01-26T15:39:00.001+11:00</published><updated>2010-01-28T21:29:33.731+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Soltura'/><category scheme='http://www.blogger.com/atom/ns#' term='Telco'/><category scheme='http://www.blogger.com/atom/ns#' term='VAS'/><category scheme='http://www.blogger.com/atom/ns#' term='Vishma'/><title type='text'>Telcos to learn liberalisation from WWW !</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;Its Tuesday morning 8 o' clock at Singapore subway, crowded but still I was able to find a corner seat. Started playing &lt;a href="http://en.wikipedia.org/wiki/Beyonc%C3%A9_Knowles"&gt;Beyonce&lt;/a&gt;'s "&lt;a href="http://en.wikipedia.org/wiki/Sweet_Dreams_%28Beyonc%C3%A9_Knowles_song%29"&gt;Sweet Dreams&lt;/a&gt;" in my iPhone 3GS, once again blaming Singapore for not having iTunes! First I checked &lt;a href="http://www.facebook.com/jeyakumaran?ref=profile"&gt;Facebook&lt;/a&gt;, replied to my earlier day's 'political status'. Then logged into &lt;a href="http://www.google.com.sg/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;ved=0CAcQFjAA&amp;amp;url=http%3A%2F%2Fwww.tweetdeck.com%2F&amp;amp;ei=n2deS5mZNI3o7APW1czMAg&amp;amp;usg=AFQjCNEJHd95FwwUo9HDxyL02YHDQmpVLg&amp;amp;sig2=M-XTKu7kXbhZD2F-MgGdtw"&gt;TweetDeck&lt;/a&gt;, browsed through all the tweets, replied to few and then checked my personal emails and &lt;a href="http://sg.linkedin.com/in/jkumaranc"&gt;linkedin&lt;/a&gt;. Afterthat started checking my company emails and replied to the important ones. By the time I reached my alighting station, turned on iPhone Singapore Bus Guide Application to know the next bus arrival time, then started going through the Google Reader. When I reached my office, I had almost finished with the morning logistics I used to do during the first hour of a working day. Interesting Isn't it !!&lt;br /&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;Getting to the point now, last week we had series of discussions and presentations with few Telcos on democratizing Value Added Services(VAS) applications, how to make use of cloud for VAS domains, how would an &lt;a href="http://jk-blogging.blogspot.com/2010/01/vishma-democratization-of-app.html"&gt;appstore become handy&lt;/a&gt; on this, how this could reach &lt;a href="http://roshni-h.blogspot.com/2010/01/democratization-of-content.html"&gt;new market segments&lt;/a&gt; etc etc ... The meetings were fruitful and there are positive reactions to the ideas. But I ain't gonna discuss about the internals of the discussions. Instead I am more interested on discussing on the barriers set to Telcos by themselves on this.&lt;br /&gt;&lt;br /&gt;Let them be Singaporean Telcos, be Australian Telcos, be UK Telcos, Telcos maintain a kind of orthodox, old school, red-tape&amp;nbsp; and hierarchical model based culture which I anyway every other industry does so with the exception of software industry. Recalling my many Enterprise Architecture sessions in Australia, where we had number of Telco industry personalities came and present various topics on this and more often than not, the cultural aspects of their architecture were same and I am sure the other countries are no difference possibly with exception of USA.&lt;br /&gt;&lt;br /&gt;Having these in minds, lets look into the developments in Telco sector for last year or so. The prize wars, government regulations, Mobile Number Portability and other competitions all contributed to bring the basic Telco services as commodities. &lt;a href="http://jk-blogging.blogspot.com/2010/01/vishma-democratization-of-app.html"&gt;As I discussed in my previous post&lt;/a&gt;,&amp;nbsp; Telcos have no options but to look for different business cases other then basic network services.&lt;br /&gt;&lt;br /&gt;While searching for those new business models, I there are couple of wiser options in their tables.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Collaborate with smart phone distributors with high speed mobile broadband packages.&lt;/li&gt;&lt;li&gt;Develop their VAS domain and keep users interested with their network.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Understandably, most of the Telcos concentrated hard on the first option, thanks to the initiatives from those smart phones vendors (Or rather Smart Vendors ? ). The option is simple, less risky and of-course very attractive. But is this strategy something sustainable? I doubt, think about this... Now in Singapore we have almost unlimited data plans with smart phones with affordable rates. I think it wouldn't take another 6 more months to get these packages cheaper next to free. You take a simple 50 dollars package. You get 300 voice calls free, 500 SMS free, IDD almost free, MMS free, more than 10G data. So for a Telco's point of view all the network capability services are almost free.&amp;nbsp; So we are not far away from having mobile broadband as another low rate commodity service. So who will eventually benefit from these ? Of-course the smart-phone vendors, and&amp;nbsp; those smart-phone applications vendors. Fine what about Telcos? This helps to retain their subscriber base. They can sustain the revenue. But sooner rather than later, all the Telcos will have'em eventually, the prize war will start again. Now you need to come up with something else.&lt;br /&gt;&lt;br /&gt;Making way to smart-phones and broadband are inevitable, rather important too. One can't deny the technology advancements. But we need to find a way to make subscribers use Telco business services and capabilities. Now get back to my lead-up to this blog. I used iPhone to almost all my morning activities. Let it be from checking mails to use my next bus's arrival time. None of the services ... None of them are from Telcos. And ironically all the applications need only Internet and a smart phone. It doesn't require other Telco capabilities. The pathetic situation is, if one can jail break a smart-phone software, then they can even use Skype or other Internet services to perform the basic Telco voice calls. How broadband intruded Telcos' own business models ? ... "Capitalization is at its best !!!"&lt;br /&gt;&lt;br /&gt;What's the missing point here? There is no point blaming the capitalisation. Remember it opens up market segment to you. What we miss here is making hay on it. We managed to pull Internet users out of PCs to mobile. So the user community is huge now for Telcos. The amount of time they spend with their mobiles are huge. So we need to fish'em !&lt;br /&gt;&lt;br /&gt;This is where the Value Added Services become key. Telcos inevitably and eventually will start focusing on the value added services. Because that is what giving them the competitive advantages. That is what will help them to sustain their user community. The traditional prize wars or current trend of smart phone collaborations will not help for longer period of time. In the era where &lt;a href="http://www.hp.com/hpinfo/newsroom/press/2008/080513a.html"&gt;HP needs EDS&lt;/a&gt; or &lt;a href="http://www.oracle.com/us/corporate/press/018363"&gt;Sun needs Oracle,&lt;/a&gt; the fact tells that, to be successful you can't just have the capabilities. But you need services built on top of those capabilities. If we only provide capabilities but not services then eventually we will lose. Capabilities are not something special ! That can be provided by anybody over the time. Its the services make you unique and give you a chance to explore more and more business cases.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://newsimg.bbc.co.uk/media/images/42299000/jpg/_42299206_redtape_203.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://newsimg.bbc.co.uk/media/images/42299000/jpg/_42299206_redtape_203.jpg" width="135" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;So I did have some intense discussions on this with my friends who are in the Telco industry. All the Telcos are concentrating on VAS platforms and services, there is no doubt about it. But the issue is again on the lack of progress and when I found out the reasons, again its disappointing. &lt;b&gt;The culture !&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Think about Internet boom in early 2000. The biggest success of Internet is due to its liberalization. Its not about giants like Microsoft,Sun or IBM. Its the users who made Internet successful. The users became experts then developers then inventors and then eventually set up companies. The kind of culture Internet created allowed more and more innovations. Whenever we thought this is the end of it, and then we had community web sites, WEB2.0, cloud. There will be more and more. Because its not about one person or one company. Its about everybody. The kind of openness provided creativity. Nobody stopped them doing anything. My blog is not moderated by Google. If somebody complains then only they will review. The approach is fair I guess and 99 out of 100 would not violate the moralities. Yes it brought many IP issues. Music industry got worse for example. But was it worth a gamble? Of-course it was.&lt;br /&gt;&lt;br /&gt;I presume what Telcos lack is the similar adaptation. They are worried about opening up the VAS market to next level. The kind of VAS market we are in now doesn't provide any room to be innovative or creative. To be creative, I need either a sponsor or technical skill or investment. Can I make an alert SMS service to my clients on my "Out of Office" status? I can do this for my emails in couple of minutes. How can I do it for my mobile numbers? Its not easy. I am a retailer who wants to alert my customers on any new arrivals? Do I have to develop a service to be hosted on a server ? Come on ...... If Internet can do these with just a matter of few clicks, why not for SMS and MMS ? What prevents only Telcos but not Internet ?&lt;br /&gt;&lt;br /&gt;What we want is a place where we can do these easily. Easy as sending an email. Less moderation if not at all. No red and blue tapes. Are Telcos ready to do this ? They need to think, Think about a simple example here. Nobody stopped me writing this blog, or any of my previous blogs. If blogger service wasn't available then I would be using word-press. If there is no such blogging services I wouldn't be writing even. Who would make an effort to publish a book for these kind of write-ups ? But since there are blogging like services, see how many people became writers over the last few years. How much of money Google like companies earned. Similarly a retailer wouldn't even think of developing an alert solution to the customers. But if a Telco provides a service like it (Like blogger), then he or she will certainly use it. If not his Telco but another Telco provides it (switching from blogger to word-press), then he or she will switch to another Telco. So the moment we target common users to become VAS provides, it will be like common Internet users become writers. What's the business model here? Simple every single such users will build a community around them, you will have 1000s of users with 100s of users around each of them and they all will start using your network capabilities like SMS and MMS. Wow what a traffic would be?&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://bbcmms.com/Quickstart/ImageLib/red_tape_-_color.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="141" src="http://bbcmms.com/Quickstart/ImageLib/red_tape_-_color.jpg" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;So I think the point is clear now. The subway story in the first paragraph is not just to tell you what I did in the morning. The message is for the Telcos. See how Internet is successful in penetrating into the Telcos' own subscribers. But Telcos missing the golden opportunities. Its the time to trust our business domain and open it for others. You open the ground for common men and just watch ! They will make revenue for you eventually !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-7667034383164015521?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/7667034383164015521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/01/why-not-telcos-learn-liberalisation.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/7667034383164015521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/7667034383164015521'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/01/why-not-telcos-learn-liberalisation.html' title='Telcos to learn liberalisation from WWW !'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-5190441971194936223</id><published>2010-01-03T20:45:00.014+11:00</published><updated>2010-01-11T15:12:19.212+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mchoice'/><category scheme='http://www.blogger.com/atom/ns#' term='Soltura'/><category scheme='http://www.blogger.com/atom/ns#' term='SDP'/><category scheme='http://www.blogger.com/atom/ns#' term='Telco'/><category scheme='http://www.blogger.com/atom/ns#' term='VAS'/><category scheme='http://www.blogger.com/atom/ns#' term='Service Delivery Platform'/><category scheme='http://www.blogger.com/atom/ns#' term='Vishma'/><category scheme='http://www.blogger.com/atom/ns#' term='Value Added Services'/><title type='text'>Democratizing the VAS domain : Wake-Up call for Telcos !!!</title><content type='html'>&lt;span style="color: #330099; font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #330099; font-style: italic;"&gt;"I think we missing a point here"&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;This was the quote by the CEO after having listen to  half a day Enterprise Architecture proposal by a team of well established Gartner-ish Enterprise Architecture Consultants' presentation. The presentation was impressive, introducing a state of the art SOA based Value Added Services(VAS) platform to the Telco. The project of 5.5 million dollars requires major transformation of its existing middle-ware platform, enabling  service providers to develop and deliver cost effective and with less time to value services.&lt;br /&gt;&lt;br /&gt;Irked by the CEO's comment, the consultant goes back to the slide of numbers pointing out the cost reductions, IT-Business alignments, baseline of initiatives etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #330099; font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #330099; font-style: italic;"&gt;"No, the problem is with the passive approach. What we need is the sustainable revenue growth  targeting new market segments. This requires a radical business initiatives instead of a technical brilliance"&lt;/span&gt; ---CEO tries to reiterate the point again.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Back then the scenes behind the backdrops are pretty much common for any companies of this nature in year 2009. Revenue lost, shareholders dissatisfaction, employee turnover, no new market penetrations .. The long list grows.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;CEO continues ... &lt;span style="color: #330099; font-style: italic;"&gt;"What we had failed over the last 12 months or so is on getting new businesses, especially on the service provider market, there are virtually no new services, and more over we lost few of our major service providing vendors "&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The problem of this nature is common to almost all the business sectors. But especially in Telcos, the problem rather becomes a challenge in introducing new service providers into the business domain, more precisely &lt;a href="http://en.wikipedia.org/wiki/Value-added_service"&gt;VAS&lt;/a&gt;.  VAS are more or less the distinct factor for any Telco's business of this era. Voice calls, 3G,  WAP, GPRS, SMS or any other relevant technologies are now become commodities. Every other Telco has these services with virtually unlimited with low rate charges if not completely free. IDD charges are getting lower and lower. Network coverage is available virtually everywhere. Roaming charges going down. So winning customers is not easy with these old tactics. With the introduction of mobile number portability resolutions, retaining the existing customer base is&lt;br /&gt;&lt;div color="red" face="Verdana,Arial,Helvetica,Georgia" size="24px" style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 50%; float: right; line-height: 26px; margin-bottom: 10px; margin-left: 10px; margin-top: 10px; opacity: 0.75; text-align: right; width: 150px;"&gt;&lt;br /&gt;&lt;span style="opacity: 0.75;"&gt;...What if there is a common market place for application providers to sell their services? Why don't we democratize this?&lt;span style="opacity: 0.9;"&gt;...&lt;span style="font-size: x-small;"&gt;&lt;span style="font-style: italic;"&gt;Desperate CEO to open up market for micro apps&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;also becoming a challenge nowadays. Customers are more intelligent, well informed and demanding compared to last decade. They look for services, services which are unique and attractive. Services which enable them to perform their business activities. Services which help them to interact with their social networks, Services which drive the 'WOW' effects and stand tall. In the era of smart phones, its all about the kind of VAS services offered matter most rather than the commodity voice and SMS services.&lt;br /&gt;&lt;br /&gt;Telcos too are reactive to these emerging demands. Almost all the Telcos have invested heavily on &lt;a href="http://en.wikipedia.org/wiki/Service_delivery_platform"&gt;service delivery platforms&lt;/a&gt;. They have those so called "Killer Applications" and services. They have agreements with number of service providers to deliver such services. High percentage of their expenditure is on VAS departments and understandably it is one of the pillar revenue source for Telcos too. What becomes a sad reality is that those giant services with macro marketing will always draw attentions initially. But end of the day the innovation and uniqueness of the services which are going to matter most, and I strongly believe innovations come from different market places, especially from the small and medium service vendors. So the bottom line is , we need a kind of more federalized system in place where all kind of services irrespective of their sizes, market-share and other influences should find a place to market and sell themselves !&lt;br /&gt;&lt;br /&gt;Now the million dollar question arrives. Is there an resolute answer to this obvious problem? &lt;br /&gt;&lt;div color="red" face="Verdana,Arial,Helvetica,Georgia" size="24px" style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 50%; float: left; line-height: 26px; margin-bottom: 10px; margin-right: 10px; margin-top: 10px; opacity: 0.75; text-align: right; width: 150px;"&gt;&lt;br /&gt;&lt;span style="opacity: 0.75;"&gt;...So damn, I have this fantastic SMS twitter service, But I don't know how to market this? Is there a place where I can publish and offer a free trial?&lt;span style="opacity: 0.9;"&gt;...&lt;span style="font-size: x-small; font-style: italic;"&gt;An application geek&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;How do Telcos bring in new services to counter this problem? How do they attract more service providers?  If do so, how can they enable service providers to reach their target market? Moreover how do they bring in more customers?&lt;br /&gt;&lt;br /&gt;Having a system in place, an open API for service development and a seamless service provisioning can provide the ground to address the concerns raised by these questions. But  as people say, technology is just an enabler of the business. It is not THE business.  The business constraint here is about reaching out the market place from both poles, customers and service providers. The business solution is to find out a viable answers for the questions we just raised here.&lt;br /&gt;&lt;br /&gt;So we getting there now slowly !  We need a common market place for customers to reach and check out the available services. The service providers to reach and sell their services.  The idea is neither fresh nor a rocket science. It has been practiced by every other business all the way from cultivation to Apple App Store  ... except one thing !&lt;br /&gt;&lt;br /&gt;&lt;div style="font-weight: bold; text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: #009900;"&gt;Democratization !&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;The world of Telcos known for their big bang projects, often criticized for their failure to adapt what Internet is so successful of .. Democratization.  Democratization is all about empowerment in lower levels by giving fair chances. That is , opening up the market place to micro applications and give them a fair go. Remember the question of bringing in new services into the market place? Democratization is the way to go. Telcos can no more rely on the killer service providers.  Those killers are so expensive to manage and more often than not, they provide commodity services but nothing fresh. Democratizing the services market will open up small and medium service providers into market place. This will slowly eliminate the monopolies. There will be new initiatives to gain more customers and importantly you build your own &lt;br /&gt;&lt;div color="red" face="Verdana,Arial,Helvetica,Georgia" size="24px" style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 50%; float: right; line-height: 26px; margin-bottom: 10px; margin-left: 10px; margin-top: 10px; opacity: 0.75; text-align: right; width: 150px;"&gt;&lt;br /&gt;&lt;span style="opacity: 0.75;"&gt;...Why there is only one flicker service over MMS. This is damn expensive, how do I look for cheaper and effective service?&lt;span style="opacity: 0.9;"&gt;...&lt;/span&gt; &lt;span style="font-size: x-small; font-style: italic;"&gt; disappointed subscriber&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;community of sellers and buyers. This will open up micro applications to get into the market. Often those micro-applications create the X factors.  And of-course, if you mingle this democratization with &lt;a href="http://en.wikipedia.org/wiki/Viral_marketing"&gt;Viral Marketing&lt;/a&gt; and web 2.0 models, this will become unstoppable. Once you create your community and business around the community, that's the biggest asset you could ever have than anything else due its dependability. This is pretty much similar to how capitalization makes use of democracy ! You setup the ground, the rest will be taken care of the players !!&lt;br /&gt;&lt;br /&gt;Let's just think broad again to sum up. We basically need a market place where service providers can market their services and customers can lookout for new services. In  Telco's perspective, they need to provide this marketplace and make use the community built through this market place. Once the market place starts creating vibes, then we just needs to sit and watch. The business will ultimately grow and take care of itself. Its more of reacting to both customer and service providers phenomena and providing a common ground for them.&lt;br /&gt;&lt;br /&gt;Skeptics' antics would be to portrait this concept into yet another App Store.  But it is not ! Of course it does have many resemblances to App Store concept. But the target market segment is more interesting that what a general App Store would offer. Here we are discussing about intangible applications, we are talking about systems integrated in and with this market place.  Moreover the business model and value foresee here is vastly differing from what an App Store like model would offer.&lt;br /&gt;&lt;br /&gt;I reckon we put a pause here and anticipate some questions;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If not App Store, what this market place is going to be ?&lt;/li&gt;&lt;li&gt;Do Telcos need to build a web2.0 market place for themselves ?&lt;/li&gt;&lt;li&gt;How do we democratize the market place among different Telcos?&lt;/li&gt;&lt;li&gt;What if that market place is readily available for hosting ?&lt;/li&gt;&lt;li&gt;What if that host-able market place software is free and open source ?&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Got where we heading to ? .... Yes Stay Tuned to my next post .. !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-5190441971194936223?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/5190441971194936223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2010/01/vishma-democratization-of-app.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/5190441971194936223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/5190441971194936223'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2010/01/vishma-democratization-of-app.html' title='Democratizing the VAS domain : Wake-Up call for Telcos !!!'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-2309741006449615627</id><published>2009-12-27T22:57:00.003+11:00</published><updated>2009-12-27T23:18:29.704+11:00</updated><title type='text'>My Picks of 2009 !</title><content type='html'>&lt;span style="font-size:130%;"&gt;Technology/Industry&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Best emerging application : &lt;span style="font-weight: bold;"&gt;Google Wave&lt;/span&gt;&lt;span style="font-style: italic;"&gt; ( We use for everything now)&lt;/span&gt;&lt;/li&gt;&lt;li&gt; Flop application/framework : &lt;span style="font-weight: bold;"&gt;Mule ESB&lt;/span&gt; ( &lt;span style="font-style: italic;"&gt;!@#$&lt;/span&gt;)&lt;/li&gt;&lt;li&gt; Emerging Concept :&lt;span style="font-weight: bold;"&gt; Multi Paradigm Programming&lt;/span&gt; (&lt;span style="font-style: italic;"&gt;Hitting the balance rite&lt;/span&gt;)&lt;/li&gt;&lt;li&gt; Best Blog Post : &lt;a href="http://blogs.sun.com/jkumaran/entry/state_design_pattern_using_java"&gt;State design pattern&lt;/a&gt; ( He he !)&lt;/li&gt;&lt;li&gt; Best I learned/ing : &lt;span style="font-weight: bold;"&gt;Scala &lt;/span&gt;(Change of gears ! )&lt;/li&gt;&lt;li&gt; Regret : Failure to convince docbook to our engineering&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Politics (Going back to SL in 2010 -- He he )&lt;/span&gt;&lt;ul&gt;&lt;li&gt; Political Incident of the year: &lt;span style="font-weight: bold;"&gt;Do  I need to say &lt;/span&gt;?&lt;/li&gt;&lt;li&gt; Best Politician : &lt;span style="font-weight: bold;"&gt;Not awarded&lt;/span&gt;&lt;/li&gt;&lt;li&gt; Worst Politician : &lt;span style="font-weight: bold;"&gt;Obama&lt;/span&gt; ( &lt;span style="font-style: italic;"&gt;Where is Mr Clinton ? &lt;/span&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Sports&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Sporting Incident : &lt;span style="font-weight: bold;"&gt;Wimbledon Final Again&lt;/span&gt; (&lt;span style="font-style: italic;"&gt;Roger, u didn't deserve the title&lt;/span&gt;)&lt;/li&gt;&lt;li&gt; Best Sportsman : &lt;span style="font-weight: bold;"&gt;Gautam Gambhir&lt;/span&gt; -Cricket ( &lt;span style="font-style: italic;"&gt;Got everything in his kit&lt;/span&gt; )&lt;/li&gt;&lt;li&gt; Best Sportswoman : Not awarded&lt;/li&gt;&lt;li&gt; Worst sporting incident : &lt;a href="http://www.youtube.com/watch?v=dTXOJqnK4ZY&amp;amp;feature=fvw"&gt;Henry's Handball&lt;/a&gt; :)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Entertainment (Tamil)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Best Tamil Song  : &lt;a href="http://www.youtube.com/watch?v=Pmowntr3yYE"&gt;Kana Kangiren&lt;/a&gt; (Anantha Thandavam)&lt;/li&gt;&lt;li&gt; Best Male Singer : &lt;a href="http://www.youtube.com/watch?v=rjUUYqk_1jM"&gt;Roop Kumar (Oru Thevathai Paarkum)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Best Female Singer : &lt;a href="http://www.youtube.com/watch?v=ijUCbvPnAGo"&gt;Bele Shinde (Kooda Varuviya)&lt;/a&gt; (&lt;span style="font-style: italic;"&gt;Shereya Ghosal Version 2 !&lt;/span&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Best Movie :&lt;span style="font-weight: bold;"&gt; Anantha Thandavam&lt;/span&gt; ( &lt;span style="font-style: italic;"&gt;Sujatha can be proud&lt;/span&gt; ! )&lt;/li&gt;&lt;li&gt; Best Male Actor : &lt;span style="font-weight: bold;"&gt;Aathee&lt;/span&gt; (Eeram)&lt;/li&gt;&lt;li&gt; Best Actress : &lt;span style="font-weight: bold;"&gt;Rukmini&lt;/span&gt; (Anantha Thandavam)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Entertainment (English)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Song : &lt;a href="http://www.youtube.com/watch?v=5w9E5yJDOwM"&gt;The Script Break Even&lt;/a&gt; ( &lt;span style="font-style: italic;"&gt;What a pathos melody&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Best Female Singer : &lt;a href="http://www.youtube.com/watch?v=CZ4fkyX_Fs0"&gt;Kelly Clarkson&lt;/a&gt; (Song "Already Gone" from "All I ever wanted" )&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Best Male Singer :&lt;span style="font-weight: bold;"&gt; Danny O'Donoghue &lt;/span&gt;(The script break even)&lt;/li&gt;&lt;li&gt;Best Movie : &lt;span style="font-weight: bold;"&gt;Hangover&lt;/span&gt; (Avatar Narrowly misses out ) &lt;/li&gt;&lt;li&gt;Biggest Flop : &lt;span style="font-weight: bold;"&gt; Wanted&lt;/span&gt; (Even Anjelina cannot cure ! )&lt;/li&gt;&lt;li&gt;Best Actor    :  &lt;span style="font-weight: bold;"&gt;Will Smith&lt;/span&gt; ( Seven  Pounds )&lt;/li&gt;&lt;li&gt;Best Actress :  &lt;span style="font-weight: bold;"&gt;Zoë Saldaña&lt;/span&gt; (Avatar)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Novels/Contemporaries/Biographies Read this year&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;The Namesake&lt;/span&gt; (Jhumba Lahiry) --  By far the best contemporary I ever read&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Unaccustomed Earth&lt;/span&gt; (Jhumba Lahiri)&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;True Colors &lt;/span&gt;(Adam Gilchrist)&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;One Night At The Call Center&lt;/span&gt; (Chetan Bagat)&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Anal Kaatru&lt;/span&gt; (Jeyamohan-Tamil)&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Q &amp;amp; A &lt;/span&gt;(Vikas Swarp)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Special Mentions&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Best movie I watched this year - Music and Lyrics (Superb movie, don't miss)&lt;/li&gt;&lt;li&gt; The song I listen most # times - &lt;a href="http://www.youtube.com/watch?v=2vS49_v4ZlU"&gt;Way Back Into Love&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;To see my 2008 picks &lt;a href="http://www.facebook.com/jeyakumaran?v=box_3&amp;amp;ref=profile#/note.php?note_id=72527380128"&gt;Check Here &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-2309741006449615627?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/2309741006449615627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2009/12/my-picks-of-2009.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2309741006449615627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/2309741006449615627'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2009/12/my-picks-of-2009.html' title='My Picks of 2009 !'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-6533441626308382723</id><published>2009-06-29T13:09:00.011+10:00</published><updated>2009-06-29T13:49:52.059+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code style'/><category scheme='http://www.blogger.com/atom/ns#' term='CheckStyle'/><category scheme='http://www.blogger.com/atom/ns#' term='svnchecker'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>How to enforce Checkstyle in SVN commits : Simple Guide</title><content type='html'>This is a simple tutorial on how to setup &lt;a href="http://checkstyle.sourceforge.net/"&gt;Checkstyle&lt;/a&gt; into &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; hooker.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;CheckStyle Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Checkstyle is going to be the tool we use for enforcing out code style at repository level.&lt;br /&gt;There are good valid reasons for using it.&lt;br /&gt;1) Very comprehensive way of controlling the code style. It does come with standard Sun code style enforcement. But one can always modify the XML file to relax or change the standard.&lt;br /&gt;2) It doesn't change the code. It just enforce the check and tells you what are the violation. This is exactly what we want. We could have used Jalopy. But it simply modifies the code which is being enforced. The ownership of the code still belongs to programmer. So we just wants to check the code style and tell the programmer about the violation. That's it.&lt;br /&gt;3) Of course its open source&lt;br /&gt;4) Better way for automation. Easy to integrate with Maven and Ant.&lt;br /&gt;5) More importantly the subversion checker framework supports it nicely !&lt;br /&gt;&lt;br /&gt;So lets get a hand-on experience now.&lt;br /&gt;&lt;br /&gt;1) Download the checkstyle distribution from &lt;a href="http://checkstyle.sourceforge.net/"&gt;http://checkstyle.sourceforge.net&lt;/a&gt; . I use the version 5.0&lt;br /&gt;2) Create a sample project with src directory and add a few java classes. &lt;span style="font-style: italic;"&gt;(Idea : Better you copy your file templates from your IDE and use them here. Once you format, you can copy them back and use !)&lt;/span&gt;&lt;br /&gt;3) Now just try to enforce &lt;a href="http://java.sun.com/docs/codeconv/"&gt;Sun code style&lt;/a&gt; with your sample src&lt;br /&gt;&lt;br /&gt;java -jar checkstyle-all-5.0.jar -c &amp;lt;checkstyle-dir&amp;gt;/sun_checks.xml -r &amp;lt;sample-project-dir&amp;gt;/src&lt;br /&gt;&lt;br /&gt;This command will just traverse through src directory and check the code style of java classes against the sun_checks.xml standard. sun_checks.xml is the sample file given by CheckStyle which has the sun standards configured.&lt;br /&gt;&lt;br /&gt;4) Now we are comfortably placed in writing the svn hooker to enforce this check.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);font-size:130%;" &gt;Subversion, Subversion Hooker and Subversioncheker &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this section we will see how this checkstyle command can be configured in &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; so that for each commit the checksyle will be enforced. Subversion provides an excellent flexibility for doing this. Those who have already worked on Subversion knows, if we commit a source without commit message eventually the commit will fail. This setting is done through a &lt;a href="http://svnbook.red-bean.com/en/1.5/svn.reposadmin.create.html#svn.reposadmin.create.hooks"&gt;hooker&lt;/a&gt;. You can get more information &lt;a href="http://svnbook.red-bean.com/nightly/en/svn.reposadmin.create.html#svn.reposadmin.create.hooks"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So lets write our hooker and test the work. Since svn repository would have been already setup in your environment and its a System Admin job, I recommend you to use this &lt;a href="http://www.tonyspencer.com/2007/03/02/setup-a-subversion-server-in-4-minutes/"&gt;very simple steps&lt;/a&gt; to setup your svn repository without further delay (If you don't have it already).&lt;br /&gt;&lt;br /&gt;Now I assume, you must have setup your subversion with your sample project, started the svn server daemon and checkout the sample project to another directory !&lt;br /&gt;&lt;br /&gt;Now its time to write our svn hooker script. There is a good framework called &lt;a href="http://svnchecker.tigris.org/"&gt;svnchecker&lt;/a&gt; to write svn hooker scripts easily. Download the 0.3 version from &lt;a href="http://svnchecker.tigris.org/"&gt;here&lt;/a&gt;. (The project is renamed to Repoguard with no release yet !)&lt;br /&gt;&lt;br /&gt;Now writing svn hooker is very simple. Follow these steps&lt;br /&gt;&lt;br /&gt;1) Go to your svnrepos/hooks directory (This is the directory where we have our svn hooks)&lt;br /&gt;2) Copy the pre-commit.tmpl file to pre-commit (Provided you haven't done it so far)&lt;br /&gt;3) Add the following command before the "exit 0" line&lt;br /&gt;&amp;lt;svnchecker-0.3-dir&amp;gt;/Main.py PreCommit $REPOS $TXN || exit 1&lt;br /&gt;&lt;br /&gt;4) svnchecker needs a configuration file named svncheckerconfig.ini for the relevant configurations. The file can be inside the hooker directory itself. Add the following settings inside that file.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;[Default]&lt;br /&gt;#This property tells Subversionchecker about all checks&lt;br /&gt;#(UnitTests, AccessRights, XMLValidator etc) it should execute.&lt;br /&gt;#Separated with comma (",")&lt;br /&gt;Main.PreCommitChecks=Checkstyle&lt;br /&gt;&lt;br /&gt;#Path of java executable to run Checkstyle command&lt;br /&gt;Checkstyle.Java=java&lt;br /&gt;&lt;br /&gt;#Classpath for executing Checkstyle rules&lt;br /&gt;Checkstyle.Classpath=&lt;/span&gt;&amp;lt;checkstyle-dir&amp;gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;checkstyle-5.0-installdir&gt;/checkstyle-all-5.0.jar&lt;br /&gt;&lt;br /&gt;#Configuration file for Checkstyle to run its rules.&lt;br /&gt;Checkstyle.ConfigFile=&lt;checkstyle-install-dir&gt;/sun_checks.xml&lt;br /&gt;&lt;br /&gt;#In case of failures, where should Subversionchecker redirect the errors&lt;br /&gt;Checkstyle.FailureHandlers=Console&lt;/checkstyle-install-dir&gt;&lt;/checkstyle-5.0-installdir&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5) Now you restart the svn daemon again&lt;br /&gt;&lt;br /&gt;6) Try to commit the checkout sources with changes. Or add a new java class now and see whether your commit fails if the code is not adhere to sun java standard. Your commits will eventually fails !&lt;br /&gt;&lt;br /&gt;Client side tips :&lt;br /&gt;1) Tune your IDE to make use of sun check style. Right now IntelliJ IDEA has a plug-in for Checkstyle. You can use it. But the IDEA reformatter doesn't support importing checkstyle. So you may have to manually modify the IDEA code style to sync with sun style or vice-versa.&lt;br /&gt;&lt;br /&gt;Now give your developers hard time :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-6533441626308382723?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/6533441626308382723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2009/06/how-to-enforce-checkstyle-in-svn.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6533441626308382723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6533441626308382723'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2009/06/how-to-enforce-checkstyle-in-svn.html' title='How to enforce Checkstyle in SVN commits : Simple Guide'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-6769617846721152748</id><published>2009-06-29T11:05:00.010+10:00</published><updated>2009-06-29T13:51:32.356+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code style'/><category scheme='http://www.blogger.com/atom/ns#' term='CheckStyle'/><category scheme='http://www.blogger.com/atom/ns#' term='svnchecker'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>Code styles and their strict enforcement</title><content type='html'>"At 6.00 pm, Jonathan got SVN update, found lots of conflicts. He tried to do svn diff to see what were the changes. He realized most of the conflicts are due to in-proper code conventions used by the peer commiter. By the time he fixed and committed the code it was 9.00 pm. His girl friend was dating with Tom !"&lt;br /&gt;&lt;br /&gt;"Alice is asked to do a code review on a new comer's code. She first checked the code convention. It was poor and terrible. She spent one hour before actually went in to review the code standards and patterns"&lt;br /&gt;&lt;br /&gt;"Shekhar is annoyed finding a code which catches "Exception" instead of a specific Exception class. Often irritated when seeing a jdbc connection is closed inside a try clause instead of a finally clause"&lt;br /&gt;&lt;br /&gt;"Lew Huang have just read some of the Vendor's Prototype API samples. The sample programming codes do not follow any sort of standards. They are all messy. Finally Lew recommended not to sign the contract with that particular "Vendor" "&lt;br /&gt;&lt;br /&gt;Everyday we see there are many cases like these. I will be only a fool if I am to explain why you need programming styles and code reviews. These are widely accepted methodologies and an integral part of Agile's success story.&lt;br /&gt;&lt;br /&gt;But how often we take this too easy and granted? We forget to format the code before committing to source repository. We often break others' codes and style. Even if we do format, each and everyone sometimes adapt to different code styles. These always lead to nightmare for your colleague, your co-developer, your team, your reviewer, your company and of course yourself too.&lt;br /&gt;&lt;br /&gt;So the answer is simple. What if we enforce the code style checking at repository level? What if a source commit fails when trying to commit something which is not conformed to the accepted standard. Sound nice yeah? (I tried to convince my management to fail the commits if there is no relevant test cases. The idea didn't impress many including myself ;) later )&lt;br /&gt;&lt;br /&gt;I tried my hand on this now. I selected Subversion and Checkstyle and tried to enforce the codestyle formatting. I think lots of companies adapted this for many many years. This is first of many hookers I am trying to experiment. Failing commits based on lack of testcases would be next to come !&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2009/06/how-to-enforce-checkstyle-in-svn.html"&gt;Next Section : Tutorial on enforcing codestyle in Subversion&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-6769617846721152748?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='text/html' href='http://jk-blogging.blogspot.com/2009/06/how-to-enforce-checkstyle-in-svn.html' length='0'/><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/6769617846721152748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2009/06/code-styles-and-their-strict.html#comment-form' title='62 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6769617846721152748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/6769617846721152748'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2009/06/code-styles-and-their-strict.html' title='Code styles and their strict enforcement'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>62</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-308489882885861313</id><published>2009-06-28T09:01:00.002+10:00</published><updated>2009-06-28T09:16:10.270+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CheckStyle'/><category scheme='http://www.blogger.com/atom/ns#' term='Sun'/><title type='text'>Back to business .. My blogging</title><content type='html'>Well its been a long break. I had my foot on different ships simultaneously. I had an assignment with Sun, doing my higher studies at RMIT and then my main job at hSenid. Somewhere on the way I lost my plot, difficult to manage all three at sametime and realised I neither did justice to myself nor to my employers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So it was a tough call, I consulted my mentor and few friends , then decided to quit Sun. Quiting Sun wasn't an easy decision. I had a great chance to continue there even after my studies. But the main thing missing there was the fun. As far as I am concerned, one will have to enjoy his work otherwise he or she better quit. I love doing researches, design and fair amount of programming. Nothing else thrills my job except those. So I informed this to Sun and now I stick with hSenid and RMIT only which I feel is the right combination. The work and study greatly complement each other.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.everypicture.com/shop/books/de5c116b485e48e8e19120a5d0ef4428/come-back-here%21.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 300px;" src="http://www.everypicture.com/shop/books/de5c116b485e48e8e19120a5d0ef4428/come-back-here%21.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As far as blogging is concerned, I won't be blogging from my Sun site anymore. That will somehow relieve some obligations too. Could I have blogged about IDEA plugin? .. Could I have criticised Sun's very own Glassfish .. I doubt !&lt;br /&gt;&lt;br /&gt;Back to business, Today itself I will write a tutorial on code formatting CheckStyle best practice with source control.  Also I will try to continue my State pattern article.&lt;br /&gt;&lt;br /&gt;So as usual Stay Tuned !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-308489882885861313?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/308489882885861313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2009/06/back-to-business-my-blogging.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/308489882885861313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/308489882885861313'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2009/06/back-to-business-my-blogging.html' title='Back to business .. My blogging'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-132753476583409189</id><published>2008-10-22T23:20:00.004+11:00</published><updated>2008-10-23T00:40:37.957+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sun'/><category scheme='http://www.blogger.com/atom/ns#' term='opensolaris'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Sun started shining !</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sun.com/software/opensource/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 460px; height: 126px;" src="http://www.sun.com/software/opensource/img/l0_open-source.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Last week, it was a usual busy day for me. Preparing some assignments, there was a presentation on "GREEN IT". More than that, the current project I am working on, which is very challenging and getting my toil out (What does this toil mean? Sometime I pick few words used by Melbourne train commuters ;) ).&lt;br /&gt;&lt;br /&gt;One afternoon I received an email from one of a &lt;a href="http://www.sun.com/"&gt;Sun&lt;/a&gt; employee asking for an interview appointment with Sun to become RMIT's &lt;a href="http://developers.sun.com/students/community/map.jsp"&gt;Sun Campus Ambassador program&lt;/a&gt;. I was little thrilled about it, not sure what was this about though. So as usual, I did a bit of googling and found this ambassador program is really the way forward to meet my dreams :) . So I scheduled a time on last Friday and then fell busy with my other works.&lt;br /&gt;&lt;br /&gt;Friday was one of my toughest days and probably I deserved. Myself included superb team (Arpan, Thilagah and Susan) had to show an ecommerce demo which almost has all the J2EE technologies used I think. It was "meant" to be &lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture"&gt;SOA&lt;/a&gt; and I hope we achieved it for some extent. We were the only group got everything worked as expected with the proper design patterns. So we were little over confidence. I didn't really test anything, assuming it would be just a walk through for our team. It wasn't turned out to be. It really killed our time. I must have finished the demo in the morning and should have come back home and attended the stand up meeting. It didn't happen. Finally we somehow managed to get it working. But by the time it was little late and I completely forgot my interview !&lt;br /&gt;&lt;br /&gt;When I was in the train, I received the reminder alarm, but for my sake, the train got delayed and I got the call from Sun when I was inside the bus(I am still a public transport commuter. Advantage : enough time for  podcasts! ).  I politely apologized for the delay, rescheduled the interview in 15 minutes time.&lt;br /&gt;&lt;br /&gt;As it turned out to be, the interview was very smooth.  I in fact have already been familiar with most of those technologies. Only exception was &lt;a href="http://opensolaris.org/os/"&gt;opensolaris&lt;/a&gt;. But that even wouldn't be problem after the &lt;a href="http://arstechnica.com/news.ars/post/20070717-understanding-suns-project-indiana-the-quest-to-make-opensolaris-as-easy-to-adopt-as-ubuntu.html"&gt;"Project Indiana"&lt;/a&gt;. I just love &lt;a href="http://www.gnome.org/"&gt;GNOME&lt;/a&gt; with its memory leaks! Need to write a post about it another time!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://officialmafia.com/images/l.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://officialmafia.com/images/l.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So as usual, my blog had a looooong buildup. But the real story starts only now! What is Sun Ambassador Program ? Is it a job, fun or passion? For me it is nothing but all about passion. The responsibilities are really interesting and very passionate. You are given hell lot of Sun materials and you need to study it or rather learn it! I am anyway doing this more often than not.  Then you need to arrange few demos to your university which again I am indirectly doing to my colleagues these days ! And the last but not the least you need to maintain a Sun blog and manage few Sun related user groups. There is no surprise that I would have delighted and accepted the challenge. You got to work just few hours a week as this is more of a student program and not a professional program.&lt;br /&gt;&lt;br /&gt;So what are the benefits ? There are lot. First of all, you will have the SUN flavor in your shirt! You suddenly start receiving mails about Jonathan and Gosling !  It is really interesting. And you will learn many many sun technologies. If you have enough passion on open source, you can build communities within your university,  have meet ups etc etc.&lt;br /&gt;&lt;br /&gt;I recon, most of the universities should start chasing Sun to introduce this program to their respective computer science departments. Currently there are about 500+ students from 30 odd countries. This is a very small number when compared to the industry use of Java technologies.  I think &lt;a href="http://www.mrt.ac.lk/"&gt;University of Moratuwa&lt;/a&gt;, which is one of the popular universities which contributes to open source significantly, should start looking at this. &lt;a href="http://www.apache.org/"&gt;Apache&lt;/a&gt; is not the only open source world. I know there are few concerns with &lt;a href="http://www.sun.com/software/staroffice/"&gt;Star Office&lt;/a&gt; approaches, the licensing terms of &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt; blah blah. But nevertheless, it is a great platform for those students I promise.&lt;br /&gt;&lt;br /&gt;So back to some of my personal stuff (Sofar written is not personal ? ) . &lt;a href="http://senthil-it-blogging.blogspot.com/"&gt;Senthil&lt;/a&gt; used to tell me why I target Google in  most of my blog posts. And I used to answer, it is not about targeting Google (Who the dare am I to do that ? A dog bark won't harm a star! ). But I just tried to give my honest reviews, analyzing the pros and cons of each of Google's new technologies. I was one of the very few who started using &lt;a href="http://www.google.com/reader"&gt;Google Reader&lt;/a&gt; which for me is the best RSS reader by now.  But I really hate the open source MASK by few of the giant companies. One of the most important open source attribute is it's diversity. But see how many open source projects in the world are driven entirely by a single company ? Calculate and find it :)&lt;br /&gt;&lt;br /&gt;The post started with something and is proceeding with a wrong path. So better I should stop. So whats the morale of the post?&lt;br /&gt;&lt;br /&gt;I find Sun Ambassador Program is a better way forward to promote open source technologies in universities. As a student, it is win win for me. I learn many things and I contribute back to community. I wish other companies start doing this. &lt;a href="http://code.google.com/soc/2008/"&gt;Google's SOC&lt;/a&gt; is such an attempt. But it is very limited to a small bunch of skilled guys.&lt;br /&gt;&lt;br /&gt;Thats all for the day. I really wanted to make this blog purely technical. But today it is little deviated. Never mind.&lt;br /&gt;&lt;br /&gt;See you with the next post .. Bye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-132753476583409189?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/132753476583409189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2008/10/sun-started-shining.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/132753476583409189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/132753476583409189'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2008/10/sun-started-shining.html' title='Sun started shining !'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-4993381992135443542</id><published>2008-09-28T17:45:00.004+10:00</published><updated>2008-09-28T18:18:13.275+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webindows'/><category scheme='http://www.blogger.com/atom/ns#' term='web os'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Can't wait more : Publishing my web os Vision! WEBINDOWS</title><content type='html'>Recently I have prepared a vision and scope document for a web operating system which is named WEBINDOWS ! Its been once month since I started preparing this vision document, and now I am working on a BRS for this product.&lt;br /&gt;&lt;br /&gt;I had to shape up the vision and scope document more prettier and accountable. But I am really scared of Google. It can any time announce its web-os. So it won't be good if I publish my document after that [It might be the same story to IE8 features after the Chrome announcement!]. People might think I crapped few from Google. But it is not really the case. Because google hasn't publicly published any such documents or features as by now.&lt;br /&gt;&lt;br /&gt;So planned to maintain this document publically. So I can see how google's vision matches mine when their announcement comes :)&lt;br /&gt;&lt;br /&gt;I will more more on this. But for the time being just have a look on the doc.&lt;br /&gt;&lt;br /&gt;Warning : Copying or Reproduction of this document without the author's consent is illegal under Australian law!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=dhpzwhcf_15hfs6d9hm"&gt;Click Here to download the document&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-4993381992135443542?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/4993381992135443542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2008/09/cant-wait-more-publishing-my-web-os.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/4993381992135443542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/4993381992135443542'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2008/09/cant-wait-more-publishing-my-web-os.html' title='Can&apos;t wait more : Publishing my web os Vision! WEBINDOWS'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-5620354785266556702</id><published>2008-09-28T11:48:00.004+10:00</published><updated>2008-09-28T13:22:16.595+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='PKIX path building failed'/><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='ja-sig'/><category scheme='http://www.blogger.com/atom/ns#' term='SSO'/><category scheme='http://www.blogger.com/atom/ns#' term='acegi'/><category scheme='http://www.blogger.com/atom/ns#' term='spring security'/><title type='text'>Step by Step tutorial on CAS -Part 5: How to bypass accepting certificate from client side</title><content type='html'>Oh well, After a week break, we have come to the last part of this tutorial. This section is an option and specific to certain requirements only.&lt;br /&gt;As I mentioned in the part1, not every time you need SSL application and mandatory to trust the certificate. Think about an application running inside a company LAN and there are no hostnames for your local machines. We normally use ipaddress to communicate/access local servers. In such case, if there is a design constraint to use SSL for a particular application [in this case, a CAS system], we will get into a trouble. How to avoid using the hostnames ? How do we avoid validating the certificate by the client ? Is there a way that we can bypass the certificate trusting procedure and proceed with the flow ?&lt;br /&gt;The answer is ugly yes. Though we are fundamentally deviating from the purpose of SSL, we can still do this. This ugly solution is not new to java world. But it relates a much to this tutorial topic, So I thought of including this as well.&lt;br /&gt;&lt;br /&gt;jdk has a TrustManageFactory and a default &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/javax/net/ssl/TrustManager.html"&gt;TrustManager &lt;/a&gt;for trusting the server and client certificates. Similarly it has a&lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/javax/net/ssl/HostnameVerifier.html"&gt;HostnameVerifier&lt;/a&gt; for the hostname verification [Is there anything like ipverifier ?].&lt;br /&gt;What we are doing here is, we will create a dummy TrustManager and a dummy HostnameVerifier and set them as default.&lt;br /&gt;&lt;br /&gt;Following is the DummyTrustManage. &lt;blockquote style="color: rgb(51, 0, 51);"&gt;package coolsolutions.ssl.dummy;&lt;br /&gt;&lt;br /&gt;import com.sun.net.ssl.X509TrustManager;&lt;br /&gt;&lt;br /&gt;import java.io.PrintStream;&lt;br /&gt;import java.security.cert.X509Certificate;&lt;br /&gt;&lt;br /&gt;public class DummyTrustManager implements X509TrustManager {&lt;br /&gt;&lt;br /&gt; public DummyTrustManager() {&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public boolean isClientTrusted(X509Certificate cert[]) {&lt;br /&gt;     return true;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public boolean isServerTrusted(X509Certificate cert[]) {&lt;br /&gt;     return true;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public X509Certificate[] getAcceptedIssuers() {&lt;br /&gt;     return new X509Certificate[0];&lt;br /&gt; }&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;Following is the Dummy Hostname verifier&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(0, 51, 0);"&gt;package coolsolutions.ssl.dummy;&lt;br /&gt;&lt;br /&gt;import javax.net.ssl.HostnameVerifier;&lt;br /&gt;import javax.net.ssl.SSLSession;&lt;br /&gt;&lt;br /&gt;public class DummyHostnameVerifier implements HostnameVerifier, com.sun.net.ssl.HostnameVerifier {&lt;br /&gt;&lt;br /&gt; public boolean verify(String s, SSLSession sslSession) {&lt;br /&gt;     return true;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public boolean verify(String s, String s1) {&lt;br /&gt;     return true;&lt;br /&gt; }&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;Now we need to set there dummy objects into ssl context and also set them as default.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;package coolsolutions.ssl.dummy;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;import com.sun.net.ssl.SSLContext;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;import com.sun.net.ssl.TrustManager;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;import java.security.SecureRandom;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;import java.security.cert.CertificateException;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;public class DummySSLInitializer {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;  public static void initDummySsl() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      final javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[]{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;              new javax.net.ssl.X509TrustManager() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                  public void checkClientTrusted(java.security.cert.X509Certificate[] x509Certificates, String string)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                          throws CertificateException {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                  public void checkServerTrusted(java.security.cert.X509Certificate[] x509Certificates, String string)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                          throws CertificateException {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                  public java.security.cert.X509Certificate[] getAcceptedIssuers() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                      return null;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;              }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      };&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      try {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          final javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("TLS");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          sc.init(null, trustAllCerts, new SecureRandom());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new DummyHostnameVerifier());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          com.sun.net.ssl.SSLContext sunSSLcontext = SSLContext.getInstance("TLS");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          sunSSLcontext.init(null, new TrustManager[]{new DummyTrustManager()}, new SecureRandom());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          com.sun.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sunSSLcontext.getSocketFactory());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          com.sun.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new DummyHostnameVerifier());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      } catch (final Exception e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          e.printStackTrace();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;}&lt;/span&gt;&lt;/blockquote&gt;Well .. Now we need to call the initDummySsl() method of the DummySSLInitializer class in the start up.&lt;br /&gt;In our tutorial, if we need to apply this in the cas client, then have these bean definition in your client's applicationContext-security.xml&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;property name="targetClass"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;value&gt;hsenidmobile.main.ssl.DummySslInitializer&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;/value&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;/property&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;property name="targetMethod"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;value&gt;initDummySsl&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;/value&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;/property&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;/bean&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;&lt;/span&gt;Now what will happen is, when the application loaded, the dummy ssl initialization will happen, so everytime the client is about to verify the hostname and trust the certificate, it will just by pass the logic and proceed with the flow. It is extremely insecure, given the nature of why we need SSL in our application. I would rather recommend to use hostname [of course!] instead of this ugly method. But still it is fancy for testing purposes and applications inside a strict firewalls.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hope these series will be helpful for you all. If you have any doubts or issues in setting up, please drop me a mail to jkumaranc AT yahoo dot com. Let me see whether I can give a hand :)&lt;br /&gt;&lt;br /&gt;Cool&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2008/09/step-by-step-tutorial-on-cas-part1.html"&gt;Part1 : Introduction&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2008/09/step-by-step-tutorial-on-cas-part2.html"&gt;Part2 : Deploying CAS server&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2008/09/step-by-step-tutorial-on-cas-part3.html"&gt;Part3 : Configuring SSL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2008/09/step-by-step-tutorial-on-cas-part4.html"&gt;Part4 : Deploying casified application&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2008/09/step-by-step-tutorial-on-cas-part-5-how.html"&gt;Part 5: How to bypass accepting certificate from client side [This Section]&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/672917329034807317-5620354785266556702?l=www.iamjk.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.iamjk.com/feeds/5620354785266556702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.iamjk.com/2008/09/step-by-step-tutorial-on-cas-part-5-how.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/5620354785266556702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/672917329034807317/posts/default/5620354785266556702'/><link rel='alternate' type='text/html' href='http://www.iamjk.com/2008/09/step-by-step-tutorial-on-cas-part-5-how.html' title='Step by Step tutorial on CAS -Part 5: How to bypass accepting certificate from client side'/><author><name>JK</name><uri>http://www.blogger.com/profile/03103608140098908276</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-672917329034807317.post-4485597965888083014</id><published>2008-09-22T23:30:00.003+10:00</published><updated>2008-09-28T13:21:16.747+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='PKIX path building failed'/><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='ja-sig'/><category scheme='http://www.blogger.com/atom/ns#' term='SSO'/><category scheme='http://www.blogger.com/atom/ns#' term='acegi'/><category scheme='http://www.blogger.com/atom/ns#' term='spring security'/><title type='text'>Step by Step tutorial on CAS - Part4-Deploying casified application</title><content type='html'>So we are into the forth part of this tutorial. The cas server is deployed now with SSL setup. So its time to configure and deploy a simple cas client first.&lt;br /&gt;Spring security offers a simple cas client module which binary distribution is not yet available. But you could download the source tree from here.&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 0);"&gt;&lt;blockquote&gt;svn checkout http://acegisecurity.svn.sourceforge.net/svnroot/acegisecurity/spring-security/trunk/samples/cas&lt;/blockquote&gt;&lt;/span&gt;1) The casified webmodule resides inside the samples/cas/client/src/main/webapp. You might want to rename the folder webapp into casclient1.&lt;br /&gt;&lt;br /&gt;2) Since this is a checked out version, you will have to build the distribution using maven. If you don't have the maven setup, Don't worry. Just create a lib folder into the WEB-INF folder and add following jars into it.&lt;br /&gt;&lt;blockquote&gt;aopalliance-1.0.jar&lt;br /&gt;aspectjrt-1.5.4.jar&lt;br /&gt;cas-client-core-3.1.3.jar&lt;br /&gt;commons-codec-1.3.jar&lt;br /&gt;commons-collections-3.2.jar&lt;br /&gt;commons-logging-1.1.1.jar&lt;br /&gt;jstl-1.1.2.jar&lt;br /&gt;log4j-1.2.14.jar&lt;br /&gt;spring-aop-2.0.8.jar&lt;br /&gt;spring-beans-2.0.8.jar&lt;br /&gt;spring-context-2.0.8.jar&lt;br /&gt;spring-core-2.0.8.jar&lt;br /&gt;spring-dao-2.0.8.jar&lt;br /&gt;spring-jdbc-2.0.8.jar&lt;br /&gt;spring-security-acl-2.0.3.jar&lt;br /&gt;spring-security-cas-client-2.0.3.jar&lt;br /&gt;spring-security-core-2.0.3.jar&lt;br /&gt;spring-security-core-tiger-2.0.3.jar&lt;br /&gt;spring-security-taglibs-2.0.3.jar&lt;br /&gt;spring-support-2.0.8.jar&lt;br /&gt;spring-web-2.0.8.jar&lt;br /&gt;spring-webmvc-2.0.8.jar&lt;br /&gt;standard-1.1.2.jar&lt;/blockquote&gt;3)Now you have to commission your casclient1to connect your cas server authentication. Open the applicationContext-security.xml and change following settings.&lt;br /&gt;&lt;br /&gt;a)You can see that this context is using the casProcessingFilter. Most of the beans are self explanatory. You need to put the cas login url in the "loginUrl" property of bean casProcessingFilterEntryPoint.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&amp;lt;bean id="casProcessingFilterEntryPoint" class="org.springframework.security.ui.cas.CasProcessingFilterEntryPoint"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;      &amp;lt;property name="loginUrl " value="https://localhost:9443/cas/login"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;      &amp;lt;property name="serviceProperties" ref="serviceProperties"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;  &amp;lt;/bean&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;b) Configure the casAuthenticationProvider&lt;br /&gt;&lt;blockquote style="color: rgb(153, 0, 0);"&gt;&amp;lt;bean id="casAuthenticationProvider" class="org.springframework.security.providers.cas.CasAuthenticationProvider"&amp;gt;&lt;br /&gt;&amp;lt;sec:custom-authentication-provider /&amp;gt;&lt;br /&gt;&amp;lt;property name="userDetailsService" ref="userService"/&amp;gt;&lt;br /&gt;&amp;lt;property name="serviceProperties" ref="serviceProperties" /&amp;gt;&lt;br /&gt;&amp;lt;property name="ticketValidator"&amp;gt;&lt;br /&gt;   &amp;lt;bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator"&amp;gt;&lt;br /&gt;       &amp;lt;constructor-arg index="0" value="https://localhost:8443/cas" /&amp;gt;&lt;br /&gt;       &amp;lt;property name="proxyGrantingTicketStorage" ref="proxyGrantingTicketStorage" /&amp;gt;&lt;br /&gt;       &amp;lt;property name="proxyCallbackUrl" value="https://localhost:8443/casclient1/secure/receptor" /&amp;gt;&lt;br /&gt;  &amp;lt;/bean&amp;gt;&lt;br /&gt;&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;property name="key" value="an_id_for_this_auth_provider_only"/&amp;gt;&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;property name="loginUrl" value="&lt;span" style="font-weight: bold;"&gt;&lt;bean id="casAuthenticationProvider" class="org.springframework.security.providers.cas.CasAuthenticationProvider"&gt;&lt;sec:custom-authentication-provider&gt;&lt;property name="userDetailsService" ref="userService"&gt;&lt;property name="serviceProperties" ref="serviceProperties"&gt;&lt;property name="ticketValidator"&gt;&lt;bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator"&gt;&lt;constructor-arg index="0" value="http://localhost:8080/cas"&gt;&lt;property name="key" value="an_id_for_this_auth_provider_only"&gt;&lt;/property&gt;&lt;/constructor-arg&gt;&lt;/bean&gt;&lt;/property&gt;&lt;/property&gt;&lt;/property&gt;&lt;/sec:custom-authentication-provider&gt;&lt;/bean&gt;&lt;/property&gt;&lt;property name="loginUrl" value="&lt;span"&gt;&lt;bean id="casAuthenticationProvider" class="org.springframework.security.providers.cas.CasAuthenticationProvider"&gt;
