<?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-4844845394374641519</id><updated>2012-01-11T22:28:48.583+08:00</updated><category term='AOP'/><category term='Fedora'/><category term='GWT'/><category term='communication skills'/><category term='ESB'/><category term='J2EE pattern'/><category term='mobicents'/><category term='Architecture Style'/><category term='IVY jayasoft dependency management'/><category term='mobile application'/><category term='spring integration'/><category term='open source'/><category term='conference'/><category term='SOA'/><category term='outsourcing'/><category term='LINUX'/><category term='spring'/><category term='EIP'/><category term='video'/><category term='vodafone 3g'/><category term='Android'/><category term='screenshots'/><category term='code review'/><category term='database'/><category term='apache'/><category term='Time Management'/><category term='commons-logging'/><category term='mysql'/><category term='m1'/><category term='REST'/><category term='process'/><category term='domain driven design'/><category term='Web2.0'/><category term='Memory Management'/><category term='Toastmasters'/><category term='google gears'/><category term='Java'/><category term='Software Architecture'/><category term='web services'/><category term='ftpclient'/><category term='Symbian'/><category term='log4j'/><category term='mvc'/><category term='observer'/><category term='JMX'/><category term='Carnegie Mellon'/><category term='saas'/><category term='google reader'/><category term='random thoughts'/><category term='apache CXF'/><category term='svk'/><category term='version control'/><category term='RAD'/><category term='hsenid'/><category term='svn'/><category term='subversion'/><category term='google'/><category term='web browsers'/><category term='Books'/><title type='text'>Make it happen</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>hsenidians</name><uri>http://www.blogger.com/profile/00759296857684951527</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>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-2898749604946629172</id><published>2008-09-07T08:34:00.002+08:00</published><updated>2008-09-07T08:40:31.082+08:00</updated><title type='text'>Not having aggregator is a real struggle !</title><content type='html'>I am pushing for a &lt;a href="http://www.planetplanet.org/"&gt;planet  &lt;/a&gt;like aggregator for us quite a some time. But still not happening. But sooner than later it will come. I even forgot to update this blog as it is a real headache posting the same stuff from my one and here.&lt;br /&gt;&lt;br /&gt;Planned to make this blog as a set of feed reader gadgets. But it isn't fair for everybody as first blog will always be displayed first.&lt;br /&gt;&lt;br /&gt;And since my last post from here, I had blogged number of posts in mine. Please do visit here :)&lt;br /&gt;&lt;br /&gt;http://jk-blogging.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-2898749604946629172?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/2898749604946629172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=2898749604946629172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/2898749604946629172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/2898749604946629172'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2008/09/not-having-aggregator-is-real-struggle.html' title='Not having aggregator is a real struggle !'/><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-4844845394374641519.post-8273368483315003404</id><published>2008-05-30T13:53:00.001+08:00</published><updated>2008-05-30T13:58:24.237+08:00</updated><title type='text'>0
How To Run Ant FTP / Telnet / Rexec Task</title><content type='html'>&lt;p&gt;Included in Ant are optional tasks like &lt;a href="http://ant.apache.org/manual/OptionalTasks/ftp.html"&gt;FTP&lt;/a&gt; &amp;amp; Telnet. For example the FTP Task allows you to communicate with FTP servers (get / put / list etc.). &lt;/p&gt; &lt;p&gt;Unfortunately they don’t work out of box and not well documented. In this article we will explain the whole procedure in six simple steps.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To use them follow the steps below:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Download &lt;a href="http://apache.mirrors.pair.com/jakarta/oro/binaries/jakarta-oro-2.0.8.tar.gz"&gt;jakarta-oro&lt;/a&gt; and &lt;a href="http://mirrors.isc.org/pub/apache/jakarta/commons/net/binaries/commons-net-1.4.0.tar.gz"&gt;commons-net&lt;/a&gt; library.&lt;br /&gt;Note: The links above allow you to download the version I tested them with.&lt;/li&gt;&lt;li&gt;Create a lib directory for your project if you have not already done so.&lt;/li&gt;&lt;li&gt;Extract the jar file jakarta-oro*.jar from &lt;a href="http://jakarta.apache.org/oro/"&gt;jakarta-oro&lt;/a&gt; library you have downloaded and copy it to the lib directory you created.&lt;br /&gt;Note: &lt;ul&gt;&lt;li&gt;If you have downloaded from the links in step 1 then the exact file name is &lt;em&gt;jakarta-oro-2.0.8.jar&lt;/em&gt; &lt;/li&gt;&lt;li&gt;Ensure that the file is copied to the lib directory and not to any of its sub-directories&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Extract the jar file commons-net*.jar file from &lt;a href="http://jakarta.apache.org/commons/net/"&gt;commons-net&lt;/a&gt; library you have downloaded and copy it to the lib directory.&lt;br /&gt;Note: &lt;ul&gt;&lt;li&gt;If you have downloaded from the links in step 1 then the exact file name is &lt;em&gt;commons-net-1.4.0.jar&lt;/em&gt; &lt;/li&gt;&lt;li&gt;Ensure that the file is copied to the lib directory and not to any of its sub-directories&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Add the ftp taskdef at the top:&lt;br /&gt;&lt;taskdef name="”ftp”" classname="”org.apache.tools.ant.taskdefs.optional.net.FTP”/"&gt;&lt;/li&gt;&lt;li&gt; Add the appropriate task to your build.xml file. An example task to upload a directory is as follows: &lt;pre&gt;&lt;target name="upload"&lt;br /&gt;   description="Upload the files to WordPress Installation" &gt;&lt;br /&gt;   &lt;ftp verbose="yes" passive="yes" depends="yes"&lt;br /&gt;       remotedir="/test" server="taragana.com"&lt;br /&gt;       userid="ftp_login" password="ftp_password"&gt;&lt;br /&gt;       &lt;fileset dir="src"&gt;&lt;br /&gt;   &lt;/ftp&gt;&lt;br /&gt;&lt;/target&gt;&lt;br /&gt;&lt;/pre&gt; &lt;/li&gt;&lt;li&gt;Run Ant by including the lib directory in classpath. An example would be: &lt;pre&gt;ant -lib lib upload&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;Note: I just had to include the lib directory to ensure all its jar files are automatically included. &lt;/p&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Note: &lt;/p&gt; &lt;ul&gt;&lt;li&gt;The same procedure can be used to run Ant Telnet and RExec Tasks. Only the task name and parameters in build.xml file will change. Check the corresponding manuals for details.&lt;/li&gt;&lt;li&gt;I have promoted the use of lib directory (within project) to keep your jar files. This makes your jar files available only to your project. There are two other alternatives. First you can keep them in &lt;em&gt;%ANT_HOME%\lib&lt;/em&gt; directory. This makes them available to all projects for all users in that machine.&lt;br /&gt;You can also keep them in &lt;em&gt;${user.home}/.ant/lib&lt;/em&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-8273368483315003404?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/8273368483315003404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=8273368483315003404' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/8273368483315003404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/8273368483315003404'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2008/05/0-how-to-run-ant-ftp-telnet-rexec-task.html' title='0&#xA;How To Run Ant FTP / Telnet / Rexec Task'/><author><name>Janesh Chandika</name><uri>http://www.blogger.com/profile/16925728866518756835</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-4844845394374641519.post-5056944631351099597</id><published>2008-03-04T17:47:00.000+08:00</published><updated>2008-03-04T17:48:21.134+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ftpclient'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Feb 29, A bad day for apache ftpclient users</title><content type='html'>The below post was written on February 29 and I forgot to post this after writing it ! hence posting little late.&lt;br /&gt;&lt;br /&gt;I am writing this blog after being severely hit by apache ftpclient bug on February 29.&lt;br /&gt;Unsurprisingly the bug has hit the whole world of apache ftpclient users and there were number blogs immediately started popping up.&lt;br /&gt;&lt;br /&gt;By abstract this is the bug all about. When the ftpclient parses the files one by one, it validates the file timestamp. In Unix system it gets the file properties and the date will have the MMM HH:mm if the file is less than 6 months old. Since there is no year in the time stamp string, ftpclient parses it with year 1970 (Well done !) which of course is not a leap year. So Feb 29 is not a valid date in 1970 hence this code segment in class UnixFTPEntryParser returns null.&lt;br /&gt;&lt;br /&gt;                 try{&lt;br /&gt;           file.setTimestamp(super.parseTimestamp(datestr));&lt;br /&gt;       }catch (ParseException e){&lt;br /&gt;           return null;  // this is a parsing failure too.          &lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;There are many temporary ugly fixes based on your requirements ;) For me , I just needed the files to be downloaded, so I catch the exception and if the date string has "Feb 29" and the current year is leap, I just set a Feb 29 time and return the File instead of NULL.&lt;br /&gt;&lt;br /&gt;But people who needs correct time stamp will have to a bit of extra work. This &lt;a href="https://issues.apache.org/jira/browse/NET-188;jsessionid=4E7628A856C819421669F3B65A75A230"&gt;link&lt;/a&gt; discusses about possible fixes and implications.&lt;br /&gt;&lt;br /&gt;The good thing is we have another four year time to fix this problem !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-5056944631351099597?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/5056944631351099597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=5056944631351099597' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5056944631351099597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5056944631351099597'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2008/03/feb-29-bad-day-for-apache-ftpclient.html' title='Feb 29, A bad day for apache ftpclient users'/><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-4844845394374641519.post-4123487738966732816</id><published>2008-02-29T11:11:00.001+08:00</published><updated>2008-02-29T11:14:45.649+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='spring integration'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='EIP'/><title type='text'>More on spring integration</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.springframework.org/files/logo.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.springframework.org/files/logo.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Like I mentioned in my previous post, I in fact had a shot at spring integration. And I asked my buddy Lahiru to have a work on it. And unsurprisingly he found no time to get familiar with the model.&lt;br /&gt;&lt;br /&gt;This is a one major reason why I favor spring integration even though it is far away from being matured.&lt;br /&gt;I don't find any other proper open source &lt;a href="http://www.enterpriseintegrationpatterns.com/toc.html"&gt;EIP&lt;/a&gt; solutions alive. Two possible solutions which come across are &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt; and &lt;a href="http://activemq.apache.org/"&gt;Apache Camel&lt;/a&gt;. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://tbn0.google.com/images?q=tbn:UoId-AMeaGMlBM:http://upload.wikimedia.org/wikipedia/en/thumb/9/9c/Apache-camel-logo.png/150px-Apache-camel-logo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://tbn0.google.com/images?q=tbn:UoId-AMeaGMlBM:http://upload.wikimedia.org/wikipedia/en/thumb/9/9c/Apache-camel-logo.png/150px-Apache-camel-logo.png" alt="" border="0" /&gt;&lt;/a&gt;The former is nothing more than a messaging solution(Wonder how many use its EIP ) and later is something we can make use of (Its again from activemq!). But I don't need a reseller when you are selling directly to me !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So why I prefer &lt;a href="http://www.springframework.org/spring-integration"&gt;spring integration&lt;/a&gt; over these solutions ? Here are my points.&lt;br /&gt;1) The AOP support.&lt;br /&gt;Just imagine the beauty of designing the AOP based integration solution. It will be a treat to do and follow.&lt;br /&gt;2) What most of us are doing with Mule (or other opensource ESB) now ? We just use spring every where in it. 9 out of 10 times this is spring on Mule. So being persisted with one framework (which is of course spring! ) will be much more easier for the developers.&lt;br /&gt;3) Spring documentation.&lt;br /&gt;Many times I have mentioned this in my blog. Spring documentation and examples give us no time to understand the solutions easily. I haven't see any other documentations which can get closer to this. Spring addresses its documentation is a user's point of view where most of other open source documentations are done on the developer's(I mean the developers involved in the particular open source product) point of view.&lt;br /&gt;&lt;br /&gt;4) The IOC model.&lt;br /&gt;The same I mention again. It will be easy to plug in the third party adapters with less fuss. I think it is pretty obvious advantage.&lt;br /&gt;&lt;br /&gt;So what I am looking for in the near future on this.&lt;br /&gt;&lt;br /&gt;1) WS support&lt;br /&gt;Desperately need this. I think they will have it before the 1.0 release. SOA is becoming a marketing term these days and it is vital for the designers to have the WS support. So it is so important that spring integration must be released with WS support. But even now it will not be difficult to have a such adapter anyway.&lt;br /&gt;&lt;br /&gt;2) Facility to make hot configuration.&lt;br /&gt;When it comes to production environment, application providers will see easy way of plugging their applications. So a kind of JMX based admin console would be handy. Then again exposing a bean MBean is very easy in spring and you can still self cook.&lt;br /&gt;&lt;br /&gt;Now few hiccups on using Mule which is a tested ESB solution and you can still use it for EIP. To be honest, I had a bit of confused wrong view on ESB against EIP and tried Mule for the purpose of EIP. Surely you can do. But its like using hammer to smash a mosquito. Mule is intended to be used for ESB. Though it pretty tough call to use it for typical SDP solutions, you can still use it. But I differ for using it solely for EIP. Because you will put unnecessary efforts to make it working (Actually I did) and its documentation will never be helping that much.&lt;br /&gt;&lt;br /&gt;But I am pretty confident that a good EIP framework can turn out be a good ESB solution. When you do that, you will have your own flavor and you will have nothing more than what you need. Spring integration has its potential. I wish they have a spring integration (EIP framework) and separate ESB framework so&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://tbn0.google.com/images?q=tbn:2GjyPiqQt-G2JM:http://www.cm.iparenting.com/fc/editor_files/images/1042/Articles/Head_Shoot_BW-Randy_Jackson.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 104px; height: 139px;" src="http://tbn0.google.com/images?q=tbn:2GjyPiqQt-G2JM:http://www.cm.iparenting.com/fc/editor_files/images/1042/Articles/Head_Shoot_BW-Randy_Jackson.jpg" alt="" border="0" /&gt;&lt;/a&gt; people will be able to make use of them according to their needs.&lt;br /&gt;&lt;br /&gt;So the morale of the post having two points.&lt;br /&gt;1)  Like Americal Idol judge Rendy says "Spring integration, Check it out baby, check it out ! "&lt;br /&gt;2) If you have any butterflies regarding to EIP, ESB and SOA, work on it. Read hell lot of documents and get the clear picture of them. I still am working on !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-4123487738966732816?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/4123487738966732816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=4123487738966732816' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/4123487738966732816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/4123487738966732816'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2008/02/more-on-spring-integration.html' title='More on spring integration'/><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-4844845394374641519.post-1748173946389814306</id><published>2008-01-28T11:02:00.000+08:00</published><updated>2008-01-28T11:03:41.755+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='EIP'/><title type='text'>Hang on ! Spring integration is due</title><content type='html'>One on the most expecting even happened on 25th January. Spring integration &lt;a href="http://www.springframework.org/node/583"&gt;1.0 M1 is released&lt;/a&gt;. This is something I have been looking for our integration framework design. People will have their options for these in different varieties. &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt; is a well known option for &lt;a href="http://www.enterpriseintegrationpatterns.com/toc.html"&gt;EIP (Enterprise Integration Pattern)&lt;/a&gt;. But it is used as MQ server more often than a platform for EIP. Then we have &lt;a href="http://mule.mulesource.org/display/REG/Home"&gt;Mule&lt;/a&gt; which is an ESB solution, but Mule has its own flavor for EIP and it really works.&lt;br /&gt;&lt;br /&gt;But spring integration framework must be much better option with time. Not just because it is spring, but it is because of its IOC. Even before you dig in to this &lt;a href="http://static.springframework.org/spring-integration/reference/htmlsingle/spring-integration-reference.html"&gt;Reference Manual&lt;/a&gt; you can think of how easy the applications could be wired using spring. And with spring web services and Spring integration , you can model a good SOA architecture in your applications.&lt;br /&gt;&lt;br /&gt;I am going to have a try on this.  Will update you with progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-1748173946389814306?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/1748173946389814306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=1748173946389814306' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/1748173946389814306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/1748173946389814306'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2008/01/hang-on-spring-integration-is-due.html' title='Hang on ! Spring integration is due'/><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-4844845394374641519.post-351198766106615180</id><published>2008-01-21T11:18:00.001+08:00</published><updated>2008-01-21T11:18:48.189+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IVY jayasoft dependency management'/><title type='text'>IVY 2.0 is released as apache project</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ant.apache.org/ivy/images/ivy-lierre.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 111px; height: 64px;" src="http://ant.apache.org/ivy/images/ivy-lierre.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Delighted to see Apache &lt;a href="http://ant.apache.org/ivy/index.html"&gt;IVY&lt;/a&gt; released its 2.0 version under apache. IVY is a long time sitter under incubator and I surprised about it &lt;a href="http://hsenidians.blogspot.com/2007/05/ivy-dependency-manager-part1.html"&gt;in this post&lt;/a&gt;. Good to see IVY is under apache label now. Even better I see it under ant which will definitely help promoting IVY. I always feel that ivy + ant will always a better option over maven for small and medium proprietary projects. We at hsenid use ivy heavily and it is our major dependency management setup.&lt;br /&gt;&lt;br /&gt;Click here to see the &lt;a href="http://ant.apache.org/ivy/history/2.0.0-beta1/release-notes.html"&gt;release notes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Congratulations IVY.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-351198766106615180?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/351198766106615180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=351198766106615180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/351198766106615180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/351198766106615180'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2008/01/ivy-20-is-released-as-apache-project.html' title='IVY 2.0 is released as apache project'/><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-4844845394374641519.post-8203625307073875449</id><published>2008-01-14T17:44:00.000+08:00</published><updated>2008-01-14T17:47:30.849+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web browsers'/><title type='text'>Is Your HTML Good Enough?</title><content type='html'>I found an article that have few links for browser testing services. Here are copy paste part of that article. You can access the original one from &lt;a href="http://webworkerdaily.com/2008/01/07/is-your-html-good-enough-7-browser-testing-services/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://ipinfo.info/netrenderer/index.php"&gt;IE NetRenderer&lt;/a&gt;&lt;/b&gt; will show your page in IE 5.5, 6, or 7, to give Mac and Linux-based designers a quick sanity check. It’s free and quick. &lt;p&gt;&lt;b&gt;&lt;a href="http://www.browsrcamp.com/"&gt;BrowsrCamp&lt;/a&gt;&lt;/b&gt; is designed to show off how your page looks under the various Mac browser out there. You can view Safari screenshots for free, or take VNC control of a live Mac loaded with 11 different browser for prices starting at $3 for 2 days.&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;a href="http://browsershots.org/"&gt;Browsershots&lt;/a&gt;&lt;/b&gt; is the most comprehensive of the free services, offering screen captures of your site under dozens of different Linux, Mac, and Windows browsers. It’s also popular, and it can take quite a while for requests to work to the head of the queue to be rendered. They’ve recently introduced a $15 per month &lt;a href="http://browsershots.org/priority/"&gt;priority processing&lt;/a&gt; program to jump requests to the head of the queue.&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;a href="http://www.browsercam.com/default2.aspx"&gt;BrowserCam&lt;/a&gt;&lt;/b&gt; offers an online interface for managing screenshots across a variety of recent browsers and operating systems including Linux, Mac, and Windows; their coverage is excellent. You can get a 24-hour free trial; after that, plans range from $19.95 for one-day access to $399.95 for a full year. Their separate Device Capture service is the only one I know that will do screenshots of your site on Blackberry and Windows Mobile devices.&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;a href="http://litmusapp.com/"&gt;Litmus&lt;/a&gt;&lt;/b&gt; covers a variety of Windows browser, from IE 5.0 up to the alpha of Firefox 3, and say they’re adding Mac browsers soon. Results are returned via screenshots. They also integrate bug tracking, version management, and private URLs you can use to share compatibility results with clients. These features come at a price after the initial 30-day trial: 39 euros monthly for an individual account, or 129 euros monthly for a team account.&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;a href="http://www.netmechanic.com/products/browser-index.shtml"&gt;Browser Photo&lt;/a&gt;&lt;/b&gt; comes from Keynote NetMechanic. They promise screenshots from Windows, Mac and Linux systems for a $15 one-time fee or $150 per year, but don’t offer any details on which browsers or versions they cover in advance of sign-up, or any trial program.&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;a href="http://www.browserpool.com/kc/wob/portal.jsp"&gt;BrowserPool&lt;/a&gt;&lt;/b&gt; takes the VNC approach to provide access to Mac, Windows, and Linux systems. Their pricing starts at 29.99 euros for one month, but unfortunately their software versions are a bit out of date.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-8203625307073875449?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/8203625307073875449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=8203625307073875449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/8203625307073875449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/8203625307073875449'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2008/01/is-your-html-good-enough.html' title='Is Your HTML Good Enough?'/><author><name>Vidula Hasaranga</name><uri>https://profiles.google.com/105526828407969131979</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-crRNjEBF_7w/AAAAAAAAAAI/AAAAAAAADuo/3iEwFK6aqn0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-1014529709271356993</id><published>2007-12-24T12:28:00.001+08:00</published><updated>2007-12-24T12:29:20.180+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobicents'/><title type='text'>Deploying mobicents services on startup</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.flickr.com/16/22030208_e766d7962f_o.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://static.flickr.com/16/22030208_e766d7962f_o.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;style type="text/css"&gt;  &lt;!--   @page { size: 8.5in 11in; margin: 0.79in }   P { margin-bottom: 0.08in }  --&gt;&lt;/style&gt;&lt;p style="margin-bottom: 0in;"&gt;I had spent about 20 minutes to search in the &lt;a href="https://mobicents.dev.java.net/"&gt;mobicents&lt;/a&gt; documentation to find out the way to make the mobicents deployments permanent. But unfortunately I could not find in the documents which I thought should be a important documentation for any such servers. It might be my mistake to look out the wrong documents or I am afraid, it might have missed in their documents.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;But fortunately I didn't spend too much of time to find the way. It is of course an easy and straightforward task. but I wonder how this good procedure made unnoticed and not documented properly. My apologizes to mobicents community if I didn't really look into the correct documentations.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;You just have to use a template &lt;a href="http://en.wikipedia.org/wiki/BeanShell"&gt;BSH&lt;/a&gt; script to make it working .. thats it.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;For example I  need my http-servlet-ra to be deployed on server startup and make it permanent.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;Here are the steps I followed.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;/p&gt;&lt;ol style="color: rgb(51, 0, 51);"&gt;&lt;blockquote&gt;&lt;li&gt;Copy the  &lt;mobicents-home&gt;/resources/http-servlet-ra/*.jars into  &lt;mobicents-home&gt;server/server/all/deploy-mobicents/  &lt;/mobicents-home&gt;&lt;/mobicents-home&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Copy the  &lt;mobicents-home&gt;/resources/http-servlet-ra/deploy-http-servlet-ra.bsh  into &lt;mobicents-home&gt;server/server/all/deploy-mobicents/scripts/&lt;/mobicents-home&gt;&lt;/mobicents-home&gt;&lt;/p&gt;&lt;/li&gt;&lt;/blockquote&gt;&lt;/ol&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;Thats it. Your resource adapter will be installed on server startup. You don't have to do ant ra-deploy from ra folder anymore !&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;Now how about installing and activating our own sbb jars on startup? Simple .. I have a http connector sbb to be deployed and activated upon startup. These are the steps I followed to do so.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;/p&gt;&lt;ol&gt;&lt;blockquote style="color: rgb(51, 0, 51);"&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Copy the httpconnectorsbb-DU.jar  into &lt;mobicents-home&gt;server/server/all/deploy-mobicents/&lt;/mobicents-home&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Now you have to write a  httpconnectorsbb-DU.bsh file and copy in to  &lt;mobicents-home&gt;server/server/all/deploy-mobicents/scripts/&lt;/mobicents-home&gt;&lt;/p&gt;&lt;/li&gt;&lt;/blockquote&gt;&lt;/ol&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt;        Use the following &lt;a href="https://mobicents-examples.dev.java.net/source/browse/mobicents-examples/3pcc/3pcc_sip_slee/scripts/thirdPCCTrigger-deploy.bsh?hideattic=0&amp;amp;rev=1.1&amp;amp;only_with_tag=HEAD&amp;amp;view=markup"&gt;sample bsh&lt;/a&gt; file and modify it for your service. Make sure you have the same name as your DU jar file name.&lt;br /&gt;&lt;br /&gt;You may just have to modify these two variables. Add your  sbb name, sbb vendor and the version mentioned in your sbb jar xml.&lt;br /&gt;&lt;br /&gt;     &lt;blockquote&gt;  String thirdPCCTriggerURL = "${jboss.server.home.url}deploy-mobicents/ThirdPCCTrigger-DU.jar";&lt;br /&gt;ServiceIDImpl serviceId = new ServiceIDImpl("se.jayway.sip.slee.service.ThirdPCCTrigger-service", "Jayway", "0.1");&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Now start your mobicnets server and you will see your RAs and SBBs installed and activated there.&lt;br /&gt;&lt;br /&gt;Coool !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-1014529709271356993?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/1014529709271356993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=1014529709271356993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/1014529709271356993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/1014529709271356993'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/12/deploying-mobicents-services-on-startup.html' title='Deploying mobicents services on startup'/><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-4844845394374641519.post-499920688687834662</id><published>2007-11-28T11:34:00.000+08:00</published><updated>2007-11-28T11:35:20.150+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='observer'/><category scheme='http://www.blogger.com/atom/ns#' term='AOP'/><title type='text'>Observer pattern using spring AOP</title><content type='html'>I published an article on how to implement the observer pattern using spring AOP.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jkumaranc.googlepages.com/implementingtheobserverpatternusingsprin"&gt;Visit here to have a look !&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-499920688687834662?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/499920688687834662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=499920688687834662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/499920688687834662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/499920688687834662'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/11/observer-pattern-using-spring-aop.html' title='Observer pattern using spring AOP'/><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-4844845394374641519.post-9154960122265027019</id><published>2007-11-16T11:09:00.000+08:00</published><updated>2007-11-16T11:10:38.460+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAD'/><category scheme='http://www.blogger.com/atom/ns#' term='J2EE pattern'/><title type='text'>Pattern Oriented Frameworks - Need for the hour</title><content type='html'>Got to know about the project in java.net called&lt;a href="https://jt.dev.java.net/"&gt; J2EE pattern Oriented framework&lt;/a&gt; Which has built it patterns like DAOs, Service Locators, Adaptors, MVC etc. This is something interesting and I have been dreaming for this for long long time.&lt;br /&gt;&lt;br /&gt;What I really wanted is little different approach.  The architect should do more than the design. Every chief architect of any company should bring a pattern oriented framework for their company. I doubt we can use the above mentioned java.net project or &lt;a href="https://x-rad.dev.java.net/"&gt;x-rad&lt;/a&gt; . Because if we use a common framework for this kind of things it will often bring confusions by the garbage stuffs in there.  But you can use it as a reference and build your own model for your company. That will really help the &lt;a href="http://en.wikipedia.org/wiki/Rapid_application_development"&gt;RAD&lt;/a&gt; approach.  How many times we have seen dev teams stuck in getting the basic things right ? Plenty. The main reason is that every engineer is reinventing the wheel all the time which would affect the team efficient heavily.&lt;br /&gt;&lt;br /&gt;Think about Ruby. It has gone to it's hype (Yes hype ! ) after the arrival of Rails. See Grails for how easy to do a project there. You will spend no time to get the basic setup done, your designs done etc.&lt;br /&gt;So you need a Grails like model for J2EE. You have a build.xml or maven to create the project. Create what  ever model you want.  I want a MVC setup with spring MVC, DAOs with hibernate, Mysql back end .. woof .. the build will do the rest. It will create the model with basic stuffs. So you only need to consider on your business domain, not the technical domain. Because you will have the reference implementations for your companies flavor already.&lt;br /&gt;&lt;br /&gt;Yes it is pretty hard for a service provider, every time you need to changes your technologies, designs, models etc etc. But thats what the industry is all about. Like the maven &lt;a href="http://www.ibiblio.org/"&gt;ibiblio&lt;/a&gt;, have a framework &lt;a href="http://www.ibiblio.org/"&gt;ibiblio repository&lt;/a&gt; And every time you have a model in place, just do the prototype work and commit to your framework &lt;a href="http://www.ibiblio.org/"&gt;ibiblio repository&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So the need for the hour is an architect (framework architect or infrastructure architect) who should design the prototypes with every patters a company use and maintain a &lt;a href="http://www.ibiblio.org/"&gt;ibibilio&lt;/a&gt; like repository in the company.&lt;br /&gt;&lt;br /&gt;RAD will be RRRRAD then I am sure !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-9154960122265027019?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/9154960122265027019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=9154960122265027019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/9154960122265027019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/9154960122265027019'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/11/pattern-oriented-frameworks-need-for.html' title='Pattern Oriented Frameworks - Need for the hour'/><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-4844845394374641519.post-5637783891142265273</id><published>2007-11-14T11:10:00.000+08:00</published><updated>2007-11-14T11:17:39.345+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Mixed reviews on Google's Android</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://code.google.com/android/images/logo_android.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://code.google.com/android/images/logo_android.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hsenidians.blogspot.com/2007/11/google-enters-into-mobile.html"&gt;Recently Ruchith posted about Google phone&lt;/a&gt; and it's new SDK. Eventually the released happened and here is a little post on it.&lt;br /&gt;After the initial delightment of the announcement on &lt;a href="http://code.google.com/android/"&gt;Android&lt;/a&gt; release, people seemed giving mixed reviews on it's Dalvik virtual machine. Impressed with the linux2.8 kernel , libraries and the application stack. But the eyebrows are raised when it comes to the runtime engine Dalvik.&lt;br /&gt;&lt;br /&gt;When I saw that the Dalvik's limited support to standard java ( Ok Sun java !) , suddenly GWT came to my mind where GWT supports core java like java.lang , still it is a different JRE and compiler. But it is understandable for GWT as end of the day you create java scripts out of it.&lt;br /&gt;&lt;br /&gt;But here Dalvik's attempts to become a standard for mobile devices. Of course we often have enough troubles and limitations with J2ME. So Google would want to have its own standard. But it will take a bit long while to be available and compatible in the market phones.&lt;br /&gt;&lt;br /&gt;But IPhone is yet to arrive in Asian market and Google is planning to release its own model, it won't be too long Android dominating the arena.&lt;br /&gt;&lt;br /&gt;And since Google's lack of intention to go along with Open JDK on this, I think slowly Google is moving to its own Google JDK. So be ready !!!&lt;br /&gt;&lt;br /&gt;Good articles found on &lt;a href="http://www.infoq.com/news/2007/11/android-java"&gt;Info Q&lt;/a&gt; and &lt;a href="http://www.oreillynet.com/onjava/blog/2007/11/dalvik_googles_tweaked_nonstan.html"&gt;oreillynet&lt;/a&gt; .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-5637783891142265273?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/5637783891142265273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=5637783891142265273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5637783891142265273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5637783891142265273'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/11/recently-ruchith-posted-about-google.html' title='Mixed reviews on Google&apos;s Android'/><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-4844845394374641519.post-2487060491073487979</id><published>2007-11-06T18:58:00.000+08:00</published><updated>2008-11-19T04:56:36.953+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile application'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Google enters into mobile</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_My8VtRTLD60/RzBR72YwZ8I/AAAAAAAAABg/y8scYUIybPU/s1600-h/gphone.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_My8VtRTLD60/RzBR72YwZ8I/AAAAAAAAABg/y8scYUIybPU/s200/gphone.jpg" alt="" id="BLOGGER_PHOTO_ID_5129690064228476866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Google takes a big step forward by moving into mobile and introducing Open Hanset Alliance(&lt;span style="font-weight: bold;"&gt;OHA&lt;/span&gt;) which includes 34 powerful companies such as Qualcomm, Motorola, Samsung, T-Mobile, Sprint, Skype, LG, HTC, KDDI, DoCoMo and China Mobile,etc.  Goal of this alliance is to develop an &lt;span style="font-style: italic;"&gt;open source operating system&lt;/span&gt; for mobile phones, in other words "&lt;span style="font-weight: bold;"&gt;an alternative to Symbian OS, Windows mobile and iPhone&lt;/span&gt;". (I'm sure Apple will think about opening their OS and Symbian too).&lt;br /&gt;&lt;br /&gt;Google's mobile  OS will be called &lt;span style="font-size:130%;"&gt;"&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Android&lt;/span&gt;&lt;/span&gt;" (No "Google" word/logo attached at all .... how humble they are  ....  ) which is an open source OS built on &lt;span style="font-weight: bold;"&gt;Linux&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;and Java&lt;/span&gt;.&lt;br /&gt;Since this mobile OS is available for free of charge for OEM vendors, this will be a major hit for proprietary mobile OS vendors.&lt;br /&gt;Further it will give more flexible environment for mobile application developers.&lt;br /&gt;And I'm sure ......... this will lead to come up with some more mobile OS  distro like in linux desktop.&lt;br /&gt;&lt;br /&gt;Surprise ........... this &lt;span style="font-weight: bold;"&gt;Android SDK&lt;/span&gt;  will be available from Nov 12th, and mobile  phones will be available from mid of 2008 [Not sure how fast it going to come here  ,  since it will be launched initially USA, Europe, Japan   and China ].&lt;br /&gt;&lt;br /&gt;I think this is a great news to mobile application development companies like us, it will eliminate some of the barrier currently we have because of the closeness of the mobile operating systems.&lt;br /&gt;&lt;br /&gt;Finally.........mobile application developers are getting more flexibility and more open environment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Sources &lt;/span&gt;:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;image from http://www.dailytechrag.com&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;info from &lt;a href="http://www.nytimes.com/2007/11/05/technology/05cnd-gphone.html?_r=3&amp;amp;ref=technology&amp;amp;oref=slogin&amp;amp;oref=slogin&amp;amp;oref=slogin"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-2487060491073487979?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/2487060491073487979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=2487060491073487979' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/2487060491073487979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/2487060491073487979'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/11/google-enters-into-mobile.html' title='Google enters into mobile'/><author><name>Ruchith</name><uri>http://www.blogger.com/profile/16735765050048668134</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://2.bp.blogspot.com/_My8VtRTLD60/RzBR72YwZ8I/AAAAAAAAABg/y8scYUIybPU/s72-c/gphone.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-7708348237783809994</id><published>2007-11-05T09:44:00.000+08:00</published><updated>2007-11-05T09:45:04.335+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='log4j'/><category scheme='http://www.blogger.com/atom/ns#' term='commons-logging'/><title type='text'>commons logging and log4j</title><content type='html'>Few weeks before there was a &lt;a href="http://www.nabble.com/Why-use-Commons-Logging--t4471789.html"&gt;mail discussion &lt;/a&gt;on getting rid of commons-logging from ws projects and the answers from people were all +1 . I wanted to have a look but I couldn't manage better time to look it.&lt;br /&gt;&lt;br /&gt;Yesterday my friend Thayapavan was asking a related question on what's the different between &lt;a href="http://logging.apache.org/log4j/"&gt;log4j&lt;/a&gt; and &lt;a href="http://commons.apache.org/logging/"&gt;commons-logging&lt;/a&gt;. Interestingly it was asked by a an interviewer which is clear now that people start thinking on why we use these two jars just because they are there !&lt;br /&gt;&lt;br /&gt;First question is why we need commons logging? The idea of commons logging must have come from the concept that logging implementation is an integration feature, not a development feature. Developers use commons logging in their code without worrying of what the implementation is. It is the integration people to decide whether to use log4j, or jdk logger or any other proprietary ones.&lt;br /&gt;&lt;br /&gt;So I think it is a development choice. You would not like to tie log4j in to your source in case you want to change it in future (example jdk one) . But I think 8 out of 10 times people wouldn't do it. And people who have tasted writing the Appenders and the other fancies what log4j has (specially after log4j 1.2) wouldn't even think of it ! So if you are comfortable using it then go for it instead wrap it with commons-logging. Or want be too smart and depend on integrators to decide then go for commons-logging !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-7708348237783809994?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/7708348237783809994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=7708348237783809994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/7708348237783809994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/7708348237783809994'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/11/commons-logging-and-log4j.html' title='commons logging and log4j'/><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-4844845394374641519.post-8340474157612299969</id><published>2007-09-23T11:39:00.000+08:00</published><updated>2007-09-23T11:40:58.301+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>Google's code review</title><content type='html'>Just happened to find out on how Google is keen on the code review.  Very finite long process. It tells you the value they give to their code reviews. "Review first before commit" is something similar to "Test first code" model . The bottom line is , you got to pay attention to code review a lot thought you may not be using the &lt;a href="http://www.perforce.com/"&gt;Perforce&lt;/a&gt; or any special tool.&lt;br /&gt;&lt;br /&gt;&lt;embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-8502904076440714866&amp;hl=en" flashvars=""&gt; &lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-8340474157612299969?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/8340474157612299969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=8340474157612299969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/8340474157612299969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/8340474157612299969'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/09/googles-code-review.html' title='Google&apos;s code review'/><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-4844845394374641519.post-7837635511995533789</id><published>2007-09-21T10:55:00.001+08:00</published><updated>2007-09-21T10:55:47.837+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='process'/><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><title type='text'>Robert Hanson on my million dollar Q</title><content type='html'>&lt;a href="http://roberthanson.blogspot.com/2007/09/tail-chasing.html"&gt;Robert Hanson writes about the million dollar question&lt;/a&gt; I have been asking to myself for long time. Whats the standard practice to learn/adapt new technologies. It is good to learn new technologies. But there are toooooo many new THINGS ! . Like he mentions on MVC, how many MVC I have gone through last year or so ? From simple JSP to Struts, JSF , spring MVC and take GWT if you wish. Sure, I learned these THINGS and that helped me to improve my skills. Every models have their own pros and cons. But will this be effective ? Can we make full use of these technologies if do continue like this ? It is true that these things are evolving and there is always a superior THING on the corner. But my questions is (Or rather lots of people's Q is), when should we do this ?&lt;br /&gt;&lt;br /&gt;I think it is the question of how the existing technology meet our expectations and how good the new technology would help to improve our solutions. I think our temptation to learn new technology (Or on our thrill on use new technologies) often beats and we skip to answer those questions and just do it.&lt;br /&gt;&lt;br /&gt;Any comments ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-7837635511995533789?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/7837635511995533789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=7837635511995533789' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/7837635511995533789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/7837635511995533789'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/09/robert-hanson-on-my-million-dollar-q.html' title='Robert Hanson on my million dollar Q'/><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-4844845394374641519.post-4572392443491300024</id><published>2007-09-19T11:35:00.000+08:00</published><updated>2007-09-19T11:36:02.371+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='domain driven design'/><title type='text'>Eric Evans' interview on InfoQ</title><content type='html'>Eric Evans talks on domain driven design in this  &lt;a href="http://www.infoq.com/interviews/domain-driven-design-eric-evans"&gt;interview&lt;/a&gt;. he is briefing on the basics of DDD and particularly on how you should focus on the domain targeted design and not on any underlying technologies. I think it is a common mistake that when we do the domain driven design we tempt to have a particular technology in the back of the mind, which will always disturb our focus.&lt;br /&gt;&lt;br /&gt;He talks about the ubiquitous languages which have been used in such designs. The concern I have is, who is the right person to do such domain driven design. Is he the domain driven architect , project leader, tech lead or the pre sales person? And at which point this phase will fall in the process cycle? because we often have the communication gap on the domain driven design when it comes to the development life cycle. So we need to make sure the model and the ubiquitous language are properly conveyed through out the software life cycle.&lt;br /&gt;&lt;br /&gt;Another important aspect I found is about on which areas of domain you have to model. Evans says, you should not model everything in the domain. It is very important to isolate the models and only focus on the complicated areas. Obviously overuse of DDD will probably affect the design as well as the business value.&lt;br /&gt;&lt;br /&gt;Want to find more .. visit &lt;a href="http://domaindrivendesign.org/"&gt;this interesting site&lt;/a&gt; on DDD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-4572392443491300024?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/4572392443491300024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=4572392443491300024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/4572392443491300024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/4572392443491300024'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/09/eric-evans-interview-on-infoq.html' title='Eric Evans&apos; interview on InfoQ'/><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-4844845394374641519.post-4686285710128448474</id><published>2007-09-13T08:09:00.000+08:00</published><updated>2007-09-13T08:10:35.750+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='apache CXF'/><title type='text'>Spring web services</title><content type='html'>&lt;span class="greenBlurb"&gt;Arjen Poutsma, project lead for the Spring Web Services framework, talks about the contract first approach &lt;a href="http://www.ddj.com/web-development/201802027"&gt;in this interview&lt;/a&gt; , which we have discussed in my last post.  Spring web services released very recently and &lt;a href="http://www.springframework.org/node/507"&gt;looks impressive&lt;/a&gt;. I think it doesn't offer any client side support. Also we need to wait and see on &lt;a href="http://incubator.apache.org/cxf/"&gt;Apache CXF&lt;/a&gt; 's response on this. &lt;a href="http://incubator.apache.org/cxf/"&gt;Apache CXF&lt;/a&gt; is considered to be a good model to use with spring.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-4686285710128448474?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/4686285710128448474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=4686285710128448474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/4686285710128448474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/4686285710128448474'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/09/spring-web-services.html' title='Spring web services'/><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-4844845394374641519.post-6007225200753149253</id><published>2007-09-10T23:31:00.001+08:00</published><updated>2007-09-10T23:31:40.395+08:00</updated><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 services'/><title type='text'>Interview on SOA and Web services</title><content type='html'>WS-* vs REST arguments are getting very popular these days. Knowing WS-* for some extent and read through the REST concept a bit, I don't understand the real fuss behind these arguments at all. Since all the big industrial giants are competing on this each other, I don't want to dig my little head in to it. But I just wanted to clarify something to myself. So this post is just to make my self clear on these technologies. I think by asking my own questions to me, I will be able find some answers or at least my friends will jump in to me and explain it. Let me try to make this post more interesting. I would like to invite Lasantha (The busy journalist in Sri Lanka) to interview me on this !!! &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha : Hi JK, would you spend some time on a interview with me.&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;JK : Me ? With you, oh no, you are a very dangerous guy !&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha : That's all past JK, Now I moved in to interview about these more safer WS vs REST arguments !&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;JK : Oh god, You will find it more difficult than your political interviews man. Anyway go ahead.&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha : People are arguing on WS-* vs REST , SOA vs ROA etc etc. What's your opinion on this.&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;JK : First of all Lasantha, I do not belong SOA republican party or ROA conservative party. I am non-aligned guy or rather I know neither of these technologies very much. &lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha : Thats ok, what do you think about the SOA and ROA?&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;JK : Well, SOA is an attempt to approach a design on a service oriented way. You define the services independently first and then provide a way to the designer on how these services can talk each other. Basically it is an evolution of traditional modular programming. But different is , you embed the service call inside the codes in the traditional distributed programming, where in SOA you treat them as services and provide the meta data about a service to another service instead calling it from source code.&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha :  What's the point doing it ?&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;JK : There is a point. First of all you see a business driven design (Is it a new term or an obvious one ? ). Designers will start looking the system in a services oriented way. So reusability will become easy and sensible I suppose. Atomic level of modularity becomes larger and the a service it self will become an application you can see.&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha : Yes I see a point.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;JK : There is another important point as well. Remember I told you, a service will offer a meta data of it, where another service can use the meta data to know how to talk with that service. So just think like if that meta data becomes a standard one then every body will start using it. The so called interoperability will become easy then.&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha : Isn't it the CORBA or DCOM trying to archive ?&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;JK : You started asking your political questions now. Well I didn't tell you that CORBA is different from SOA. You see, SOA is a concept. CORBA or DCOM or web services are technologies which can be used to implement a SOA application.&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha : So SOA is not web service then ?&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;JK : Correct, no way both can be same. In your terms, SOA is like communism and web service is like Marxism . But you know there are Leninism or Maoism where all these are trying to archive communism in different ways. &lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha : oh Ok .. So SOA is more of a methodology while web service is a kind of representation or rather implementation right ?&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;JK : Yes great.&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha :  Then why people confuse on web service and SOA are same.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;JK : It is like how REST people forgot about the origin of REST. REST was there even before, but now only it becomes a buzz word. Like wise the SOA concept is there even before these CORBA and DCOM came, but now only it shapes up well with web services. And full credit to the companies who successfully faltered people for make them believing SOA and web service are same !&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha :  That means web service is not the sole representation of SOA ?&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;JK : It cannot be sole ... but it is the best option available for now. Something like 'Dravid is the best currently available option for Indian captaincy !, but of course not the best '&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha :  Why do you think so ?&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;JK : Because Ganguly has just come back in ! Just kidding. Ok get back to the point. This is one thing I am also looking for. I think web services adopt SOA really well. Probably when web service was introduced there must be a good understanding on SOA. So web services concept or rather specs might have developed with SOA in mind. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha : Can you describe more please ...&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;JK : The key success for the SOA is on how you define the contract. That is very important since here machines talks each other without any manual intervention. The contract specified in web services is more clear , understandable which is in XML. More over CORBA is a an object oriented model. The client server coupling is very tight opposed to the web service's loose coupling. The wire protocol is SOAP which is much easier to work with than the binary format in CORBA. And I see CORBA as an underlying technology as it doesn't address the SOA approach in a broad way. But web service is giving is a big picture and it is very easy to design a SOA flavored application using web service than the CORBA. I think these days these kind arguments are not raising much after WS-I drops the RPC concept in web services. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha : Why is that ... RPC is a good model though.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;JK : Thats the thing. You need to come out from the object oriented model which CORBA posts. SOA is more to do with services not operations. Traditional web services used to create the web service methods and functions at the source code level and the transform them is WSDL. For example you write method called foo in a class and create the WSDL from that java class.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;Lasantha :  What's wrong with it ?&lt;/span&gt;  &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;JK : Every thing is wrong. You have to focus on the contract first, Otherwise you will often change your contract when ever you change the server classes. The RPC feature in WS had this impact. People often looked at the RPC web service as a replacement of CORBA. And they forgot to think about the “service” orientation there. Otherwise you would fall in to the reverse engineering I suppose. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;Lasantha : So you think the contract first is very important ?&lt;/span&gt;  &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;JK : I think thats entry point for SOA. It's like you have to design first without worrying about the underlying implementation. And when it comes to interoperability, it is even more important. You have to define the contract of your service properly. You got to implement the WSDL. This is all about messaging and services not operations.&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;JK : Beside that web services adopts the www very well as how it's name suggests. I think thats where it stands tall. Its focus on security and trust like features go beyond what http provides. It tries to standardize these features very well. For example, you can sign a SOAP message and send in a much secure way than what standard HTTP promises. Most of the times http can be safe enough but there are situations when you need more that what http addresses.&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; color: rgb(102, 0, 204);"&gt;Lasantha : I think, we need to discuss this in details and should bring ROA or rather REST in this conversation. We will continue soon&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;JK : Yes true. It would be better if we continue this with REST later. See u then bye.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-6007225200753149253?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/6007225200753149253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=6007225200753149253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/6007225200753149253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/6007225200753149253'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/09/interview-on-soa-and-web-services.html' title='Interview on SOA and Web services'/><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-4844845394374641519.post-6204166505629085767</id><published>2007-09-07T17:48:00.000+08:00</published><updated>2007-09-07T17:52:44.261+08:00</updated><title type='text'>My blog on Spring</title><content type='html'>I set me a challenge to explain Spring J2EE framework to my 5 years old nephew and ended up messing everything. But still I blog this to open up a discussion on frameworks and Spring. &lt;br /&gt;Some of real life metaphors can be confusing or argued other way. But I just tried to use it.&lt;br /&gt;&lt;br /&gt;Your comments are welcome.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jk-blogging.blogspot.com/2007/09/spring-and-my-nephew.html"&gt;Click here &lt;/a&gt;to read and discuss it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-6204166505629085767?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/6204166505629085767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=6204166505629085767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/6204166505629085767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/6204166505629085767'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/09/my-blog-on-spring.html' title='My blog on Spring'/><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-4844845394374641519.post-1191240627544905239</id><published>2007-08-28T16:35:00.000+08:00</published><updated>2008-11-19T04:56:37.249+08:00</updated><title type='text'></title><content type='html'>&lt;h1&gt;&lt;span&gt;&lt;span style="font-size:130%;"&gt;TIOBE Programming Community Index for August 2007...&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;Seems Java is still leading.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_AJ8A7UU74dU/RtPfBZlymlI/AAAAAAAAASE/AP8YvE0XkiU/s1600-h/languages_aug_2007.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_AJ8A7UU74dU/RtPfBZlymlI/AAAAAAAAASE/AP8YvE0XkiU/s400/languages_aug_2007.jpg" alt="" id="BLOGGER_PHOTO_ID_5103668017883159122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Source :  &lt;a style="color: rgb(0, 0, 0);" class="moz-txt-link-freetext" href="http://www.tiobe.com/tpci.htm"&gt;http://www.tiobe.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-1191240627544905239?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/1191240627544905239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=1191240627544905239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/1191240627544905239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/1191240627544905239'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/08/tiobe-programming-community-index-for.html' title=''/><author><name>Vidula Hasaranga</name><uri>https://profiles.google.com/105526828407969131979</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-crRNjEBF_7w/AAAAAAAAAAI/AAAAAAAADuo/3iEwFK6aqn0/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_AJ8A7UU74dU/RtPfBZlymlI/AAAAAAAAASE/AP8YvE0XkiU/s72-c/languages_aug_2007.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-890592771049799076</id><published>2007-08-09T20:32:00.000+08:00</published><updated>2007-08-09T20:33:27.470+08:00</updated><title type='text'>Web apps scalability</title><content type='html'>Along with web 2.0, web traffic is getting increased day by day. Individual users as well as enterprises are getting into the the web eyeing on the SAAS type of application and moving away form the desktop apps.&lt;br /&gt;The amount of traffic generated by these apps are tremendous, Just to name few&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Over 100 million video downloads per day from &lt;a href="http://www.youtube.com/"&gt;&lt;span style="font-weight: bold;"&gt;YouTube&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;More than 4 billion queries per day on &lt;a href="http://www.flickr.com/"&gt;&lt;span style="font-weight: bold;"&gt;FlickR&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Do I need to mention &lt;a href="http://www.google.com/"&gt;&lt;span style="font-weight: bold;"&gt;Google&lt;/span&gt;&lt;/a&gt;, .........&lt;/li&gt;&lt;/ul&gt;How these apps handle the traffic, whats the architecture behind, what are the technologies empower them ..... are some of the questions come to our mind,&lt;br /&gt;&lt;br /&gt;I came across a good &lt;a href="http://highscalability.com/"&gt;web site&lt;/a&gt; with some of the very good informations about these apps, answering above questions. It talks about how much scalable they are , and how it has been achieved and the technologies are being used.&lt;br /&gt;&lt;br /&gt;Google Architecture info - &lt;a href="http://highscalability.com/google-architecture"&gt;here &lt;/a&gt;&lt;br /&gt;YouTube Architecture - &lt;a href="http://highscalability.com/youtube-architecture"&gt;here&lt;/a&gt;&lt;br /&gt;FlickR Architecture - &lt;a href="http://highscalability.com/flickr-architecture"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-890592771049799076?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/890592771049799076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=890592771049799076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/890592771049799076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/890592771049799076'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/08/web-apps-scalability.html' title='Web apps scalability'/><author><name>Ruchith</name><uri>http://www.blogger.com/profile/16735765050048668134</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-4844845394374641519.post-2883847883172038673</id><published>2007-07-21T23:31:00.000+08:00</published><updated>2007-07-22T00:22:11.259+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='version control'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><category scheme='http://www.blogger.com/atom/ns#' term='svk'/><title type='text'>Using SVK for offline access to subversion</title><content type='html'>&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt; is a distributed version control system. Since I've been working through a dial up connection to the internet, I was looking for a way to have offline access to source control. That way I will be able to view logs, diffs and even commit changes while offline. I've only used SVK for a small time, but it looks ideal for this task.&lt;br /&gt;&lt;br /&gt;SVK commands mirror subversion commands so it's very easy to use if you are familiar with subversion. It has better support for branching and merging and doesn't keep any extra files inside your working copy (like CVS or .svn directories). SVK is built on top of the subversion and is written in Perl.&lt;br /&gt;&lt;br /&gt;I particularly like being able to filter logs and edit the files being checked in while editing the log message:&lt;code&gt;  svk log --filter 'HEAD 15 | grep employer'&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The easiest way to install SVK is to use your distribution's package manager. In Fedora, I could just use &lt;code&gt;yum install perl-SVK&lt;/code&gt; (you need to have the Fedora extra repositories configured). This downloaded about 3MB of rpms so was quite ok on a dialup connection. For alternative methods look in the &lt;a href="http://svkbook.elixus.org/"&gt;SVK book&lt;/a&gt; or &lt;a href="http://svk.elixus.org/?InstallingSVK"&gt;Installing SVK&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once you have SVK installed, initialize your local repository (depot) with&lt;br /&gt;&lt;code&gt;&lt;br /&gt;svk depotmap --init&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Initialise and sync a mirror for the remote repository with:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;svk mirror https://orangehrm.svn.sourceforge.net/svnroot/orangehrm/trunk //orangehrm/trunk&lt;br /&gt;svk sync //orangehrm/trunk&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The sync command can take a while to complete, but you can interrupt in the middle and the next time you run it, it will start from where you stopped earlier.&lt;br /&gt;&lt;br /&gt;Here &lt;code&gt;//orangehrm/trunk&lt;/code&gt; is the mirror of the remote repository. While we can checkout &lt;code&gt;//orangehrm/trunk&lt;/code&gt; and work on it, any commit will propagate to the remote server. That will not do if we are offline.&lt;br /&gt;&lt;br /&gt;So we create a local branch.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;svk copy //orangehrm/trunk //local/orangehrm&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Now we can checkout the branch.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;svk co //local/orangehrm&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This will create a orangehrm directory and you can do all your work here. Check-ins go to the local branch so you don't need network access.&lt;br /&gt;&lt;br /&gt;When you are online again, sync the mirror again, merge the changes to the local branch and update your working copy.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;svk sync //orangehrm/trunk&lt;br /&gt;svk smerge -Il //orangehrm/trunk //local/orangehrm&lt;br /&gt;svk update (from your working copy)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;You can also use &lt;code&gt;svk pull&lt;/code&gt; instead of the last 3 commands. I prefer doing it this way because I can use the &lt;code&gt;-Il&lt;/code&gt; options which apply each change from the remote server individually and uses the original log messages as commit messages.&lt;br /&gt;&lt;br /&gt;Now if you have any changes in your working copy, check them in to the local branch.&lt;br /&gt;&lt;br /&gt;Push the local changes to the remote server (first doing a dry run to check for conflicts):&lt;br /&gt;&lt;code&gt;&lt;br /&gt;svk smerge -C //local/orangehrm //oranghrm/trunk&lt;br /&gt;svk smerge -Il //local/orangehrm //orangehrm/trunk&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Again I prefer using &lt;code&gt;-Il&lt;/code&gt; to get one commit to the remote server per one local commit but you can also have one single commit containing all the local changes. Using a single commit is faster and you may prefer it if using a slow connection to the internet. You might prefer the &lt;code&gt;svk push&lt;/code&gt; command, which does the above two steps in one go.&lt;br /&gt;&lt;br /&gt;SVK also supports mirroring CVS, Perforce and some other repositories.&lt;br /&gt;I recommend you go through these &lt;a href="http://www.bieberlabs.com/wordpress/archives/2004/11/30/using-svk"&gt;tutorials&lt;/a&gt; and glance through the &lt;a href="http://svkbook.elixus.org/"&gt;SVK book&lt;/a&gt; before using it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-2883847883172038673?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/2883847883172038673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=2883847883172038673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/2883847883172038673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/2883847883172038673'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/07/using-svk-for-offline-access-to.html' title='Using SVK for offline access to subversion'/><author><name>Ruchira</name><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-4844845394374641519.post-3224117446428050152</id><published>2007-07-14T13:33:00.001+08:00</published><updated>2007-07-16T10:24:40.090+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='JMX'/><title type='text'>Reloading the spring context dynamically</title><content type='html'>For those who have used &lt;a href="http://www.springframework.org/"&gt;spring framework&lt;/a&gt; as a standalone application, might encountered a difficulty in reloading the application context. It is easier for its web application context but not for the standalone.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What are the limitations in standalone spring server for reloading the context?&lt;/span&gt;&lt;br /&gt;1) You do not have an built in API for doing it.&lt;br /&gt;2) Since this is standalone, you need a RMI like stub to talk with the standalone application context.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;So what are the solutions we have for dynamically reload the context.&lt;/span&gt;&lt;br /&gt;1) You can frequently reload the context (Using trigger or quartz scheduler whatever), But this is not good since you may only need to reload on demand most of the times.&lt;br /&gt;2) Then of course you have to implement a RMI based client to tell the server to reload it's context.&lt;br /&gt;&lt;br /&gt;Since the item 1 is more straight forward, we will discuss the solution 2 today.&lt;br /&gt;&lt;br /&gt;The easiest way to reload the context remotely on demand is &lt;a href="http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/"&gt;JMX.&lt;/a&gt; The flexibility and simplicity of using JMX in spring make this very simple.&lt;br /&gt;The idea is the, you have the &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/management/mxbeans.html"&gt;platform mbean server&lt;/a&gt; for jdk1.5 , so you can simply export a bean as MBean. So it is just a matter of having a MonitorMBean for reloading the context and call that bean for reloading the server context.&lt;br /&gt;&lt;br /&gt;This is my Monitor MBean interface&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(51, 102, 255);"&gt;public interface MonitorMBean extends Serializable {&lt;br /&gt;   String reload();&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;This is the implementation for the interface&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(51, 102, 255);"&gt;public class MonitorMBeanImpl implements MonitorMBean {&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;  * The MBean implementation for reloading method&lt;br /&gt;  *&lt;br /&gt;  * */&lt;br /&gt;  public String reload() {&lt;br /&gt;      //StandaloneSever is the class whic has the spring application context&lt;br /&gt;      StandaloneServer.reload();&lt;br /&gt;      return "Successfully reloaded the etl context";&lt;br /&gt;  }&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;Here come my context.xml for the server (I explain bean by bean, the complete source code is attached anyway)&lt;br /&gt;&lt;br /&gt;First we will have the mbean server&lt;br /&gt;&lt;blockquote style="color: rgb(51, 0, 0);"&gt;&lt;p&gt;&amp;lt;!-- Starting mbean server --&amp;gt;&lt;br /&gt; &amp;lt;bean id="mbeanServer" class="java.lang.management.ManagementFactory" factory-method="getPlatformMBeanServer"/&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;We have a POJO based bean called monitorBeanLocal.&lt;br /&gt;&lt;blockquote style="color: rgb(51, 0, 0);"&gt;&lt;p&gt;&amp;lt;!-- monitor jmx mbean for the standalone server --&amp;gt;&lt;br /&gt; &amp;lt;bean id="monitorBeanLocal" class="hsenidmobile.control.impl.MonitorMBeanImpl" depends-on="mbeanServer"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;Now we expose our POJO to be a MBean&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(51, 0, 0);"&gt;&lt;p&gt;    &amp;lt;!--Expose out monitor bean as jmx managed bean--&amp;gt;&lt;br /&gt; &amp;lt;bean id="monitorMBean" class="org.springframework.jmx.export.MBeanExporter"&amp;gt;&lt;br /&gt;     &amp;lt;property name="beans"&amp;gt;&lt;br /&gt;         &amp;lt;map&amp;gt;&lt;br /&gt;             &amp;lt;entry key="bean:name=monitorBean" value-ref="monitorBeanLocal"/&amp;gt;&lt;br /&gt;         &amp;lt;/map&amp;gt;&lt;br /&gt;     &amp;lt;/property&amp;gt;&lt;br /&gt;     &amp;lt;property name="server" ref="mbeanServer"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;Now lets have a RMI server connector&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;&lt;blockquote&gt;&lt;p&gt;        &amp;lt;bean id="registry" class="org.springframework.remoting.rmi.RmiRegistryFactoryBean"&amp;gt;&lt;br /&gt;     &amp;lt;property name="port" value="1098"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/span&gt;Of course we need the RMI registry also.&lt;br /&gt;&lt;blockquote style="color: rgb(51, 0, 0);"&gt;&lt;p&gt;&amp;lt;bean id="serverConnector" class="org.springframework.jmx.support.ConnectorServerFactoryBean" depends-on="registry"&amp;gt;&lt;br /&gt;     &amp;lt;property name="objectName" value="connector:name=rmi"/&amp;gt;&lt;br /&gt;     &amp;lt;property name="serviceUrl"&lt;br /&gt;               value="service:jmx:rmi://127.0.0.1/jndi/rmi://127.0.01:1098/server"/&amp;gt;&lt;br /&gt;     &amp;lt;property name="environment"&amp;gt;&lt;br /&gt;         &amp;lt;props&amp;gt;&lt;br /&gt;             &amp;lt;prop key="jmx.remote.jndi.rebind"&amp;gt;true&amp;lt;/prop&amp;gt;&lt;br /&gt;         &amp;lt;/props&amp;gt;&lt;br /&gt;     &amp;lt;/property&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;Thats all about the JMX part. But for our testing purpose I have a bean called WhoAmI&lt;br /&gt;&lt;blockquote style="color: rgb(51, 0, 0);"&gt;&lt;p&gt;&amp;lt;!-- Sample bean to see how this is reloaded --&amp;gt;&lt;br /&gt; &amp;lt;bean id="whoAmI" class="hsenidmobile.control.domain.WhoAmI"&amp;gt;&lt;br /&gt;     &amp;lt;property name="myName" value="JK"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;This bean is just a simple java bean additionally having a print method.&lt;br /&gt;&lt;blockquote style="color: rgb(51, 51, 255);"&gt;public class WhoAmI {&lt;br /&gt;  private String myName;&lt;br /&gt;&lt;br /&gt;  public void setMyName(String myName) {&lt;br /&gt;      this.myName = myName;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void printMyName(){&lt;br /&gt;      System.out.println("My Name is now " + myName);&lt;br /&gt;  }&lt;br /&gt;}&lt;/blockquote&gt;Cool, now lets go through our main server class.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(51, 51, 255);"&gt;public class StandaloneServer {&lt;br /&gt;  private static AbstractApplicationContext context;&lt;br /&gt;&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;      if (args.length &lt;&gt;");&lt;br /&gt;      return;&lt;br /&gt;      } &lt;br /&gt;      String contextXml = args[0];&lt;br /&gt;      context = new FileSystemXmlApplicationContext(new String[]{contextXml},     true);&lt;br /&gt;      context.registerShutdownHook();//This will be useful incase if you want     control the grace shutdown.&lt;br /&gt;&lt;br /&gt;      printMyName();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Method for reloading the context&lt;br /&gt;* */&lt;br /&gt;public static void reload() {&lt;br /&gt;  if (context == null) {&lt;br /&gt;  throw new RuntimeException("Context is not available");&lt;br /&gt;  }&lt;br /&gt;  System.out.println("Reloading the context");&lt;br /&gt;  context.refresh();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;*Test method for context reloading&lt;br /&gt;* */&lt;br /&gt;private static void printMyName() {&lt;br /&gt;    new Thread() {&lt;br /&gt;          public void run() {&lt;br /&gt;              while(true){&lt;br /&gt;                  ((WhoAmI) context.getBean("whoAmI")).printMyName();&lt;br /&gt;                  try {&lt;br /&gt;                      Thread.sleep(1000);&lt;br /&gt;                  } catch (InterruptedException e) {&lt;br /&gt;                      //do nothing&lt;br /&gt;                  }&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;      }.start();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;So we simply start the spring application there. Of course you can also see the simple method reload which is called by our monitor bean. The only different you would have noticed it, I use AbstractApplicationContext instead of ApplicationContext since it has the additional methods for our requirements.&lt;br /&gt;&lt;br /&gt;Right we are done, Oh yes  we need to test this, So how should we do. I give you a simple JMX client class to test this.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public class AdminClient {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    public static void main(String[] args) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        String mbeanName = "bean:name=monitorBean";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        MonitorMBean monitorMBean;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        String serviceUrl =     "service:jmx:rmi://localhost/jndi/rmi://localhost:1098/server";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        try {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            monitorMBean = createMbeanStub(mbeanName, serviceUrl);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            monitorMBean.reload();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        } catch (IOException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            System.out.println("IO Error occured while relading " + e); // Should  use logger instead&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        } catch (MalformedObjectNameException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            System.out.println("Malformed error " + e); // Should  use logger instead&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            System.out.println("The application context is reloaded successfully.");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        }&lt;br /&gt;  }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; private static MonitorMBean createMbeanStub(String mbeanName, String serviceUrl) throws MalformedObjectNameException,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            IOException {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        ObjectName mbeanObjectName = new ObjectName(mbeanName);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        MBeanServerConnection serverConnection = connect(serviceUrl);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        MonitorMBean monitorMBean;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; monitorMBean = (MonitorMBean)MBeanServerInvocationHandler.newProxyInstance(serverConnection, mbeanObjectName,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        MonitorMBean.class, false);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        return monitorMBean;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        private static MBeanServerConnection connect(String serviceUrl) throws         IOException {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        JMXServiceURL url = new JMXServiceURL(serviceUrl);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        JMXConnector jmxc = JMXConnectorFactory.connect(url, null);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        return jmxc.getMBeanServerConnection();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;So here what we do is, we just invoke the monitor mbean's reload method to refresh the context.&lt;br /&gt;Then So first you run the standalone&lt;br /&gt;&lt;blockquote style="color: rgb(51, 51, 0);"&gt;java hsenidmobile.control.StandaloneServer &lt;server.xml-path&gt;&lt;/server.xml-path&gt;&lt;/blockquote&gt;You can see the output&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(102, 102, 0);"&gt;My Name is now JK&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 0);"&gt;My Name is now JK&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 0);"&gt;My Name is now JK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;Now you go and change the server.xml. Edit the whoAmI bean's name parameter from JK to CK. Then run our JMX client&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(102, 102, 0);"&gt;java hsenidmobile.control.AdminClient&lt;/blockquote&gt;Now you can find the messages in the server console regarding to the reloading of the context. And also not the output message is changed to this&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(102, 102, 0);"&gt;My Name is now CK&lt;br /&gt;My Name is now CK&lt;br /&gt;My Name is now CK&lt;/blockquote&gt;Cooool. Its simple as this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;So what we have done so far?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1) We are able to reload the spring standalone context remotely on demand. This enable us to change the server properties without restarting the server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What we can do more?&lt;/span&gt;&lt;br /&gt;1) If we have the properties in a database, or if you are willing to persist the properties in a file on the fly, then you can reload the context remotely by giving the arguments. You don't need to go and modify the server xml. (Thanks to JMX)&lt;br /&gt;&lt;br /&gt;2) You have to be carefull about the singleton beans, since these beans will be destroyed and recreated for every reloading. So you may need to do the pre arrangement in the server before do the actual relaoding. But you will not need to worry about the non singleton beans. (There can be exceptional cases anyway).&lt;br /&gt;&lt;br /&gt;3) You have to apply the AOP if possible. How about notifying the client application on reloading? You can do using spring AOP. I may put another blog on AOP soon. So stay tuned.&lt;br /&gt;&lt;br /&gt;Ok we are done for today. Please find the attached codes for your reference.&lt;br /&gt;&lt;br /&gt;BTW I used&lt;br /&gt;jdk 1.5.0_11-b03 and&lt;br /&gt;spring2.0.&lt;br /&gt;The only dependencies are spring-2.0.jar and commons-logging-1.1.jar.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://people.apache.org/%7Ejkumaran/downloads/jmx-sample-byJK.zip"&gt;Click here to get the source codes for this sample.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-3224117446428050152?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/3224117446428050152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=3224117446428050152' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/3224117446428050152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/3224117446428050152'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/07/reloading-spring-context-dynamically.html' title='Reloading the spring context dynamically'/><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-4844845394374641519.post-7841470708121843642</id><published>2007-06-27T12:14:00.000+08:00</published><updated>2007-06-27T12:27:41.359+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hsenid'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>hsenid becomes mysql enterprise gold partner</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://solutions.mysql.com/solutions/partner.php?partner=1625"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://solutions.mysql.com/common/logos/mysql_100x52-64.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nice to see &lt;a href="http://solutions.mysql.com/solutions/partner.php?partner=1625"&gt;hsenid becomes mysql enterprise gold partner&lt;/a&gt;. I feel we should have become this mush earlier than now since we have been using mysql heavily in our applications for long time. I think we have a good bunch of people in both our development and support teams who have experience in mysql.&lt;br /&gt;I hope this move will give extra boost on our engineers and they will focus more and more on mysql expertises further.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-7841470708121843642?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/7841470708121843642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=7841470708121843642' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/7841470708121843642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/7841470708121843642'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/06/hsenid-becoms-mysql-enterprise-gold.html' title='hsenid becomes mysql enterprise gold partner'/><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-4844845394374641519.post-8129124516463426791</id><published>2007-06-24T11:25:00.000+08:00</published><updated>2007-06-24T11:32:54.476+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='m1'/><category scheme='http://www.blogger.com/atom/ns#' term='vodafone 3g'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Eureka !!! Connecting to m1 3g vodafone modem in fedora7</title><content type='html'>Finally I managed to get my m1 3gsm modem working with my vaio fedora 7. This is the procedure I used for got it working.&lt;br /&gt;My system is: Linux 2.6.21-1.3194.fc7 (fedora 7)&lt;br /&gt;Wvdial version : WvDial 1.54.0&lt;br /&gt;&lt;br /&gt;1) Create the following wvdial.conf&lt;br /&gt;&lt;blockquote&gt;[Dialer Defaults]&lt;br /&gt;Phone = *99#&lt;br /&gt;Username = ppp@aplus.at&lt;br /&gt;Password = ppp&lt;br /&gt;Stupid Mode = 1&lt;br /&gt;Dial Command = ATDT&lt;br /&gt;&lt;br /&gt;[Dialer pin]&lt;br /&gt;&lt;br /&gt;Init2 = AT+CPIN=5623&lt;br /&gt;&lt;br /&gt;[Dialer A1]&lt;br /&gt;Modem = /dev/ttyUSB0&lt;br /&gt;Baud = 460800&lt;br /&gt;Init3 = at+cgdcont=1,"ip","sunsurf"&lt;br /&gt;ISDN = 0&lt;br /&gt;Modem Type = Analog Modem&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;2) Then connect your vodafone mobile usb modem. (HUAWEI)&lt;br /&gt;3) Wait till it is detected properly. (You can see logs from /var/log/messages)&lt;br /&gt;4) Try to connect using wvdial.&lt;br /&gt;&lt;blockquote&gt; wvdial --config wvdial.conf A1&lt;/blockquote&gt;&lt;br /&gt;For me it fails always like this&lt;br /&gt;&lt;blockquote&gt;--&gt; WvDial: Internet dialer version 1.54.0&lt;br /&gt;--&gt; Cannot get information for serial port.&lt;br /&gt;--&gt; Initializing modem.&lt;br /&gt;--&gt; Sending: ATZ&lt;br /&gt;--&gt; Sending: ATQ0&lt;br /&gt;--&gt; Re-Sending: ATZ&lt;br /&gt;--&gt; Modem not responding.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;4) Don't worry about that. Apply the following commands&lt;br /&gt;&lt;blockquote&gt;modprobe uhci_hcd ehci_hcd ppp&lt;br /&gt;modprobe usbserial vendor=0x12d1 product=0x1003&lt;br /&gt;rmmod usb-storage&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;5) Now remove the usb modem again and plug in back.&lt;br /&gt;6) Wait till it is detected and try the following command again.&lt;br /&gt;&lt;blockquote&gt; wvdial --config wvdial.conf A1&lt;/blockquote&gt;&lt;br /&gt;This time you should be able to shout "Eureka!!".&lt;br /&gt;You should get the following message&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;[root@localhost linux-scripts]# wvdial --config wvdial.conf A1&lt;br /&gt;--&gt; WvDial: Internet dialer version 1.54.0&lt;br /&gt;--&gt; Cannot get information for serial port.&lt;br /&gt;--&gt; Initializing modem.&lt;br /&gt;--&gt; Sending: ATZ&lt;br /&gt;ATZ&lt;br /&gt;OK&lt;br /&gt;--&gt; Sending: at+cgdcont=1,"ip","sunsurf"&lt;br /&gt;at+cgdcont=1,"ip","sunsurf"&lt;br /&gt;OK&lt;br /&gt;--&gt; Modem initialized.&lt;br /&gt;--&gt; Sending: ATDT*99#&lt;br /&gt;--&gt; Waiting for carrier.&lt;br /&gt;ATDT*99#&lt;br /&gt;CONNECT&lt;br /&gt;--&gt; Carrier detected.  Starting PPP immediately.&lt;br /&gt;--&gt; Starting pppd at Sun Jun 24 11:03:33 2007&lt;br /&gt;--&gt; pid of pppd: 5255&lt;br /&gt;--&gt; Using interface ppp0&lt;br /&gt;--&gt; local  IP address 172.22.33.177&lt;br /&gt;--&gt; remote IP address 10.64.64.64&lt;br /&gt;--&gt; primary   DNS address 10.11.12.13&lt;br /&gt;--&gt; secondary DNS address 10.11.12.14&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Sorry I forgot one thing, You have to be a super user for doing this.&lt;br /&gt;&lt;br /&gt;Hope you succeed on this. Else try plug it in back. It will work for sure.&lt;br /&gt;&lt;br /&gt;Cheers!&lt;br /&gt;References&lt;br /&gt;&lt;a href="http://www.quirxi.net/mediawiki/index.php/Linux_HSDPA_Modem_Huawai_E220_with_Gentoo_%28Provider:_Ausrian_A1%29"&gt;1) Linux HSDPA Modem Huawai E220 with Gentoo (Provider: Ausrian A1) - QuirxiPedia&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.pharscape.org/content/view/28/#_Toc83808164"&gt;2)     Vodafone 3G (UMTS) Howto &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-8129124516463426791?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/8129124516463426791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=8129124516463426791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/8129124516463426791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/8129124516463426791'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/06/eureka-connecting-to-m1-3g-vodafone.html' title='Eureka !!! Connecting to m1 3g vodafone modem in fedora7'/><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-4844845394374641519.post-246591958910048308</id><published>2007-06-19T15:33:00.000+08:00</published><updated>2007-06-19T15:47:53.733+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>Getting Screenshots in symbian phones</title><content type='html'>Today I came across a situation where I wanted to get some screen shots of a Symbian application we developed to update some product documents.   Did bit of surfing and ended up with a very nice tool called "Best Screen Snap" which gives similar experience like "Sangit" [Desktop screen capturing tool].  I think this is a very handy tool for mobile application developers. More importantly it is a freeware.&lt;br /&gt;Click &lt;a href="http://www.allaboutsymbian.com/software/item/Best_Screen_Snap.php"&gt;here &lt;/a&gt;for more info and download.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-246591958910048308?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/246591958910048308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=246591958910048308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/246591958910048308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/246591958910048308'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/06/getting-screenshots-in-symbian-phones.html' title='Getting Screenshots in symbian phones'/><author><name>Ruchith</name><uri>http://www.blogger.com/profile/16735765050048668134</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-4844845394374641519.post-886462763896964673</id><published>2007-06-10T11:31:00.000+08:00</published><updated>2007-06-10T11:32:59.362+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><category scheme='http://www.blogger.com/atom/ns#' term='Memory Management'/><title type='text'>Determining true memory usage in linux</title><content type='html'>Most of us are complaining high memory usage of applications running under linux by merely checking memory using 'top' command. Actually in Linux memory is never wasted. Almost all the free memory is used for Disk Caching. True memory usage can be determined by value of used buffers comes for 'free' command.&lt;br /&gt;We also have lot of concerns over swapping. Linux mainly focus on services and greedy on allocating memory to applications. Anyway swapping can be configured using vm.swappiness parameter at &lt;span style=";font-family:monospace;color:green;"  &gt;/etc/sysctl.conf. &lt;/span&gt;This&lt;span style=";font-family:monospace;color:green;"  &gt; &lt;/span&gt;&lt;a style="font-family: times new roman;" href="http://gentoo-wiki.com/FAQ_Linux_Memory_Management"&gt;wiki&lt;/a&gt; has very useful information on linux memory management.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-886462763896964673?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/886462763896964673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=886462763896964673' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/886462763896964673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/886462763896964673'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/06/determining-true-memory-usage-in-linux.html' title='Determining true memory usage in linux'/><author><name>chirantha</name><uri>http://www.blogger.com/profile/14021562294854429165</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-4844845394374641519.post-5288311406585582329</id><published>2007-06-09T13:58:00.000+08:00</published><updated>2007-09-18T10:55:21.837+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>Funny answers in mysql for IS NULL queries</title><content type='html'>&lt;p class="MsoNormal" style=""&gt;Have you seen mysql returns non-NULL values for NULL query. If not you can try this out.&lt;br /&gt;create table null_test(a int not null auto_increment, b int not null, primary key (a));&lt;br /&gt;insert into null_test(a, b) values (0, 1); select * from null_tes&lt;span style=""&gt;t where a is null; &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span style="font-size:12;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;| a | b |&lt;span style="font-size:12;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;        +---+---+&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12;"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;&lt;/span&gt;           | 1 | 1 |&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:12;"&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;&lt;/span&gt;           +---+---+&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;Then retry&lt;span style=""&gt;  &lt;/span&gt;mysql&gt; select * from null_test where a is null;&lt;br /&gt;Empty set (0.00 sec)&lt;/span&gt;&lt;br /&gt;&lt;u1:p&gt;&lt;span style=""&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;/u1:p&gt;You can prevent this by &lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;code&gt;&lt;span style="font-family:times new roman;"&gt;setting &lt;/span&gt;&lt;a style="font-family: times new roman;" href="http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html"&gt;sql mode&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; to NO_AUTO_VALUE_ON_ZERO. (Then next sequence number is generated only when NULL value for column is inserted.)&lt;/span&gt;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;code&gt;&lt;span style=""&gt; And setting off SQL_AUTO_IS_NULL &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/set-option.html"&gt;server variable&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;. &lt;span style="font-family:times new roman;"&gt;(When ON it returns last inserted row for a table that contains an &lt;/span&gt;&lt;code  style="font-family:times new roman;"&gt;&lt;span style=""&gt;AUTO_INCREMENT&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:times new roman;"&gt; column.)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;This behavior is useful for ODBC programs, such as Access. But when such mysql table is restored from a dump,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt; data &lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;become different.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-5288311406585582329?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/5288311406585582329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=5288311406585582329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5288311406585582329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5288311406585582329'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/06/funny-answers-in-mysql-for-is-null.html' title='Funny answers in mysql for IS NULL queries'/><author><name>chirantha</name><uri>http://www.blogger.com/profile/14021562294854429165</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-4844845394374641519.post-7510455572425974798</id><published>2007-06-09T10:52:00.001+08:00</published><updated>2008-11-19T04:56:37.622+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><title type='text'>"Flying High"  Fedora 7</title><content type='html'>I upgraded my fedora 6 to fedora7 one week ago. There are lot of new features including the gnome 2.18 which is a better one for personal usages.Please refer &lt;a href="http://docs.fedoraproject.org/release-notes/f7/en_US/sn-OverView.html"&gt;release note&lt;/a&gt;s for further details.&lt;br /&gt;&lt;br /&gt;Upgrade procedure is also very safe and easy. I first downloaded the ISO DVD image from &lt;a href="http://mirrors.fedoraproject.org/publiclist/Fedora/7/"&gt;here.&lt;/a&gt; Then burnt a DVD and upgraded my fedora6 straight away. I took the risk by not getting any backups before doing it. For downloading ,they are recommending &lt;a href="http://en.wikipedia.org/wiki/Bit_torrent"&gt;bittorrent,&lt;/a&gt; It was very slow by that time(Probably I did the download soon after the release and very few in my closer region must have been using it.) , so I used the ftp instead.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This time fedora is promoting the "Flying High" theme  contrast to their earlier themes.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rnnosU03F6U/RmocA_8u0XI/AAAAAAAAABI/oA9l2wRswSY/s1600-h/Screenshot.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_rnnosU03F6U/RmocA_8u0XI/AAAAAAAAABI/oA9l2wRswSY/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5073898733678023026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;They shipped FireFox 2.0 with this release where in fedora6 they didn't recommend to use FireFox2.0. There are lot other features like SE LINUX GUI, mplayer supports, pidgin(former gaim) etc.&lt;br /&gt;&lt;br /&gt;I am still struggling to following things and still working on it.&lt;br /&gt;&lt;br /&gt;1) For my VAIO FE35GP model, I could not get my in-build wifi working.&lt;br /&gt;2) Motion-eye camera is not working.&lt;br /&gt;3) I am using m1-vodafone 3G usb modem , which is not working in fedora.&lt;br /&gt;&lt;br /&gt;All over fedora 7 is looking good and it has lot of applications shipped with, which good for people who use fedora as their personal OS.&lt;br /&gt;&lt;br /&gt;Cheers&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.fedoraproject.org/release-notes/f7/en_US/sn-OverView.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-7510455572425974798?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/7510455572425974798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=7510455572425974798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/7510455572425974798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/7510455572425974798'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/06/flying-high-fedora-7.html' title='&quot;Flying High&quot;  Fedora 7'/><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://2.bp.blogspot.com/_rnnosU03F6U/RmocA_8u0XI/AAAAAAAAABI/oA9l2wRswSY/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-4997372036090193624</id><published>2007-06-04T10:18:00.000+08:00</published><updated>2007-06-04T10:23:04.971+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='outsourcing'/><category scheme='http://www.blogger.com/atom/ns#' term='Carnegie Mellon'/><category scheme='http://www.blogger.com/atom/ns#' term='saas'/><title type='text'>Carnegie Mellon West - The New Software Industry Conference 2007</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;a href="http://west.cmu.edu/"&gt;Carnegie Mellon West&lt;/a&gt;&lt;br /&gt;     The Fisher IT Center at the Haas School of Business&lt;br /&gt;     Services: Science, Management, and Engineering Program at U.C. Berkeley&lt;/strong&gt;&lt;/p&gt;     &lt;p&gt; Presented a conference on&lt;br /&gt;   &lt;strong&gt;&lt;br /&gt;The New Software Industry: &lt;/strong&gt;&lt;em&gt;&lt;strong&gt;Forces at Play, Business in Motion&lt;/strong&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;The event took place on April 30, 2007.&lt;br /&gt; &lt;/p&gt;     &lt;p&gt;Globalization, outsourcing, and world-flattening advances in technology continue to rock the software industry in ways that will significantly alter the way that technologists do business. This conference brought together academics and industry specialists to explore the background setting, the current status, and the future of the software industry. [1]&lt;br /&gt;&lt;/p&gt;        &lt;a href="http://west.cmu.edu/sofcon/postcon/videos"&gt;Watch the videos&lt;/a&gt;&lt;br /&gt;&lt;a href="http://west.cmu.edu/sofcon/postcon"&gt;Presentation slides&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Reference: [1] Carngie Mellon West Website (3 June, 2007)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-4997372036090193624?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/4997372036090193624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=4997372036090193624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/4997372036090193624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/4997372036090193624'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/06/carnegie-mellon-west-new-software.html' title='Carnegie Mellon West - The New Software Industry Conference 2007'/><author><name>Himath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://farm1.static.flickr.com/159/345855833_d49c9e6af4.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-39255648585050261</id><published>2007-06-02T11:42:00.000+08:00</published><updated>2007-06-02T12:23:47.218+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Determine Resource Usage for a SQL session</title><content type='html'>&lt;p class="MsoNormal"&gt;Now we can use profiling session variable to determine resource usage for a sql session.&lt;br /&gt;It is introduced in mysql 5.0.37.&lt;br /&gt;All the information of variable usage can be found at&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;http://dev.mysql.com/doc/refman/5.0/en/show-profiles.html&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;This gives an idea of information can be extracted from the variable.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;mysql&gt; &lt;code&gt;&lt;b&gt;SHOW PROFILE CPU FOR QUERY 2;&lt;/b&gt;&lt;/code&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;pre&gt;+----------------------+----------+----------+------------+&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;| Status&lt;font style=""&gt;               &lt;/font&gt;| Duration | CPU_user | CPU_system |&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;+----------------------+----------+----------+------------+&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;| checking permissions | 0.000040 | 0.000038 |&lt;font style=""&gt;   &lt;/font&gt;0.000002 |&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;| creating table&lt;font style=""&gt;       &lt;/font&gt;| 0.000056 | 0.000028 |&lt;font style=""&gt;   &lt;/font&gt;0.000028 |&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;| After create&lt;font style=""&gt;         &lt;/font&gt;| 0.011363 | 0.000217 |&lt;font style=""&gt;   &lt;/font&gt;0.001571 |&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;| query end&lt;font style=""&gt;            &lt;/font&gt;| 0.000375 | 0.000013 |&lt;font style=""&gt;   &lt;/font&gt;0.000028 |&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;| freeing items&lt;font style=""&gt;        &lt;/font&gt;| 0.000089 | 0.000010 |&lt;font style=""&gt;   &lt;/font&gt;0.000014 |&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;| logging slow query&lt;font style=""&gt;   &lt;/font&gt;| 0.000019 | 0.000009 |&lt;font style=""&gt;   &lt;/font&gt;0.000010 |&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;| cleaning up&lt;font style=""&gt;          &lt;/font&gt;| 0.000005 | 0.000003 |&lt;font style=""&gt;   &lt;/font&gt;0.000002 |&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;+----------------------+----------+----------+------------+&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;        &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;All the profiling information is stored in PROFILING table in INFORMATION_SCHEMA database. More details can be extracted by directly querying the table.&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;a href="http://dev.mysql.com/doc/refman/5.0/en/profiling-table.html"&gt;http://dev.mysql.com/doc/refman/5.0/en/profiling-table.html&lt;/a&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;As this information is session based, they will be lost when session ends.&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;Profiling information will be very useful for estimating performance of mysql queries.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-39255648585050261?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/39255648585050261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=39255648585050261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/39255648585050261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/39255648585050261'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/06/determine-resource-usage-for-sql.html' title='Determine Resource Usage for a SQL session'/><author><name>chirantha</name><uri>http://www.blogger.com/profile/14021562294854429165</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-4844845394374641519.post-3294433676000425527</id><published>2007-06-01T18:31:00.000+08:00</published><updated>2008-11-19T04:56:37.759+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google reader'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='google gears'/><title type='text'>Offline readings with google reader</title><content type='html'>This may be a great news to people who carry laptops and who use google reader as their RSS or ATOM feed readers or any goooglers . You always do not need internet  to read articles anymore.  Just download  your subscribed articles [2000 articles]  to Google reader when u have internet access, and read them leisurely[ while your traveling, in the flight, in the bus ]...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_My8VtRTLD60/RmAApHOpY9I/AAAAAAAAAAo/pWn2MBbT5pM/s1600-h/google-gear-pic.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_My8VtRTLD60/RmAApHOpY9I/AAAAAAAAAAo/pWn2MBbT5pM/s320/google-gear-pic.JPG" alt="" id="BLOGGER_PHOTO_ID_5071053886734296018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The newly released Google gadget &lt;a href="http://gears.google.com/"&gt;Google gears&lt;/a&gt;  [a browser based plugin] enables off line reading on google-reader. You can download upto 2000 articles.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Google recommends Firefox 1.5+ or IE 6+.  But some how I was only succeeded with Firefox but failed with IE 6 [understood still it is a beta version].&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-3294433676000425527?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/3294433676000425527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=3294433676000425527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/3294433676000425527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/3294433676000425527'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/06/offline-readings-with-google-reader.html' title='Offline readings with google reader'/><author><name>Ruchith</name><uri>http://www.blogger.com/profile/16735765050048668134</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/_My8VtRTLD60/RmAApHOpY9I/AAAAAAAAAAo/pWn2MBbT5pM/s72-c/google-gear-pic.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-6365271686095472147</id><published>2007-05-29T23:05:00.000+08:00</published><updated>2007-05-29T23:22:46.328+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><title type='text'>Presentation on GWT</title><content type='html'>I listen to Bruce Johnson's presentation on &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT.&lt;/a&gt;  It was like an introductory presentation where he really didn't dig in to GWT. But this is a very good one for understanding the road map to GWT. He justifies the decisions nicely.&lt;br /&gt;&lt;br /&gt;It would have been great if he discussed the limitations of GWT also. While understanding the difficulties in java2javascripting , there are situations where we really struggle due to it's limitations.&lt;br /&gt;&lt;br /&gt;One of those limitation where we were in trouble is the serialization part. GWT has its own &lt;a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.user.client.rpc.IsSerializable.html"&gt;serialization&lt;/a&gt; model for their own reasons(!) and we had to write our delegates for the third party modules for using them with GWT. &lt;a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=21&amp;can=2&amp;q=serializable"&gt;Good news is&lt;/a&gt;, GWT team now planning to move away from IsSerializable interface in coming versions!&lt;br /&gt;&lt;br /&gt;Ofcourse there are lot others and fortunately we are able to get rid of those issues one by one.&lt;br /&gt;&lt;br /&gt;Those who are interested in listening the presentation, &lt;a href="http://www.infoq.com/presentations/gwt"&gt;click here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-6365271686095472147?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/6365271686095472147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=6365271686095472147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/6365271686095472147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/6365271686095472147'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/05/presentation-on-gwt.html' title='Presentation on GWT'/><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-4844845394374641519.post-5535460599978013052</id><published>2007-05-22T06:28:00.000+08:00</published><updated>2007-05-22T06:30:00.513+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web2.0'/><title type='text'>How to create a label cloud in Blogger</title><content type='html'>Blogger has the concept of 'labels' which are similar to 'tags' which is an important Web2.0 concept. However, by default Blogger does not come with a tag/label cloud. I found an interesting article on the Web about how to do this.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://phy3blog.googlepages.com/Beta-Blogger-Label-Cloud.html"&gt;Read&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will try to implement the tag cloud for this Blog soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-5535460599978013052?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/5535460599978013052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=5535460599978013052' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5535460599978013052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5535460599978013052'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/05/how-to-create-label-cloud-in-blogger.html' title='How to create a label cloud in Blogger'/><author><name>Himath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://farm1.static.flickr.com/159/345855833_d49c9e6af4.jpg?v=0'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-3040952899601666819</id><published>2007-05-19T07:43:00.000+08:00</published><updated>2008-11-19T04:56:38.111+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IVY jayasoft dependency management'/><title type='text'>IVY dependency manager (Part1 Introduction) Contd....</title><content type='html'>Himath requested to discuss the dependency management in detail.  Thanks himath for your feed back. I will try to explain this in more detail on this post. Today will discuss on dependency management in detail before go in to the IVY guide lines.&lt;br /&gt;&lt;br /&gt;Dependency management is , like its name suggests ,&lt;br /&gt;&lt;blockquote&gt; Managing the project dependencies in a centralized storage.&lt;/blockquote&gt;For example, if we are using spring-1.2.8 in our projects A and B. Then assume spring 1.2.8 has dependencies of commons-logging-1.0.4 and log4j.1.12 dependencies. So what we have to do is , we should have a lib folder inside our projects and have these all dependencies into it. So what are  the headaches for doing this.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You have to keep remember of these dependencies each every time you add a new lib. For example if you are going to have new dependency like foo.jar , the you should know which are the dependencies of foo.jar.&lt;/li&gt;&lt;li&gt;You have to keep jar files in your project repositories. For example, we may need to keep spring jars for all the project repositories which uses spring.&lt;/li&gt;&lt;li&gt;Switching from one version to another is very difficult. For example I am moving from spring 1.2.8 to spring 2.0 version. Then again I have to add the new dependencies to my project dependency folder.&lt;/li&gt;&lt;li&gt;Maintaining project artifacts is difficult. For example we have sub modules a, b and c in our project and we need to b and c jars for building a, we may need to build the b and c first before build the a.jar, even though we haven't changed the code base of b and c.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Above are few of the many problems we face when we don't have a centralized dependency management system.&lt;br /&gt;&lt;br /&gt;So now lets discuss the advantages of having a centralized dependency management system.&lt;br /&gt;If we have a dependency management system , then all of our artifacts (For us, it is mostly jar files) are in the central repository (Another svn repository). Every artifact has a configuration file where you have your dependency information. This is an extract of a configuration file for a sample. (This is taken from one of our projects etl-server)&lt;br /&gt;&lt;br /&gt;&lt;ivy-module version="1.0"&gt;&lt;info organisation="beyondm" module="etl-server-core" revision="1.1"&gt;&lt;dependencies&gt;&lt;dependency org="apache" name="commons-net" rev="1.4.1"&gt;&lt;dependency org="beyondm" name="beyondm-util" rev="1.0"&gt;&lt;dependency org="quartz" name="quartz" rev="1.5.2"&gt;&lt;dependency org="c3p0" name="c3p0" rev="0.9.0"&gt;&lt;dependency org="mysql" name="mysql-connector-java" rev="5.0.3"&gt;&lt;dependency org="springframework" name="spring" rev="1.2.8"&gt;&lt;dependency org="junit" name="junit" rev="4.1"&gt;&lt;dependency org="cglib" name="cglib" rev="2.1_3"&gt;&lt;span style="color: rgb(0, 0, 153); font-style: italic;"&gt;        &lt;dependency org="mysql" name="mysql-connector-java" rev="5.0.3"&gt;&lt;/dependency&gt;&lt;/span&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependencies&gt;&lt;/info&gt;&lt;/ivy-module&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rnnosU03F6U/Rk5gFue7sEI/AAAAAAAAABA/57DZgIR0Tfg/s1600-h/ivyimage.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_rnnosU03F6U/Rk5gFue7sEI/AAAAAAAAABA/57DZgIR0Tfg/s320/ivyimage.jpg" alt="" id="BLOGGER_PHOTO_ID_5066092282331770946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ivy-module version="1.0"&gt;&lt;info organisation="beyondm" module="etl-server-core" revision="1.1"&gt;&lt;dependencies&gt;&lt;dependency org="apache" name="commons-net" rev="1.4.1"&gt;&lt;dependency org="beyondm" name="beyondm-util" rev="1.0"&gt;&lt;dependency org="quartz" name="quartz" rev="1.5.2"&gt;&lt;dependency org="c3p0" name="c3p0" rev="0.9.0"&gt;&lt;dependency org="mysql" name="mysql-connector-java" rev="5.0.3"&gt;&lt;dependency org="springframework" name="spring" rev="1.2.8"&gt;&lt;dependency org="junit" name="junit" rev="4.1"&gt;&lt;dependency org="cglib" name="cglib" rev="2.1_3"&gt;&lt;ivy-module version="1.0"&gt;&lt;info organisation="beyondm" module="etl-server-core" revision="1.1"&gt;&lt;dependencies&gt;&lt;dependency org="apache" name="log4j" rev="1.2.12"&gt;&lt;dependency org="apache" name="commons-logging" rev="1.1"&gt;&lt;dependency org="apache" name="commons-net" rev="1.4.1"&gt;&lt;dependency org="beyondm" name="beyondm-util" rev="1.0"&gt;&lt;dependency org="quartz" name="quartz" rev="1.5.2"&gt;&lt;dependency org="c3p0" name="c3p0" rev="0.9.0"&gt;&lt;dependency org="mysql" name="mysql-connector-java" rev="5.0.3"&gt;&lt;dependency org="springframework" name="spring" rev="1.2.8"&gt;&lt;dependency org="junit" name="junit" rev="4.1"&gt;&lt;dependency org="cglib" name="cglib" rev="2.1_3"&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;span style="color: rgb(0, 0, 153); font-style: italic;"&gt;&lt;dependency org="springframework" name="spring" rev="1.2.8"&gt;&lt;/dependency&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-style: italic;"&gt;&lt;dependency org="junit" name="junit" rev="4.1"&gt;&lt;/dependency&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-style: italic;"&gt;&lt;dependency org="cglib" name="cglib" rev="2.1_3"&gt;&lt;/dependency&gt;&lt;/span&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;Here you can see etl-server-core-1.1.jar is the artifact and dependencies for this artifact are listed inside the dependencies tag. So that tells the story. You have spring 1.2.8 is in the dependency list. So you don't need to  separately keep the log4j dependencies here since you have those entries already inside the spring dependency file. If you look this in to more, which ever the projects using the etl-server-core-1.1.jar, they don't have to keep the these dependencies inside their list. Because these dependencies are already referred through etl-core-server jar.&lt;br /&gt;&lt;br /&gt;So lets list down the point now.&lt;br /&gt;&lt;br /&gt;1) Using dependency management we can maintain the centralized repository. So in your project page, you only need to use a XML file listing your dependencies. Ivy will take care of downloading them from the dependency repository when we build the project using ant.&lt;br /&gt;&lt;br /&gt;2) Ivy maintains a local cache directory (possibly inside your &lt;user-home&gt;/.ivy folder)  for your downloaded dependencies, so you don't need to download them each and every time. This download is one off.&lt;br /&gt;&lt;br /&gt;3) To publish your project artifact to repository is as easy as using an ant command publish!&lt;br /&gt;&lt;br /&gt;4) Due to the chain of dependencies concept, if you refer one artifact foo.jar in your dependency file, then whatever the dependencies needed for foo.jar will be taken care of foo's dependency file. You don't need to keep them inside your dependency file.So it makes your life much easier.&lt;br /&gt;&lt;br /&gt;So for more details it is better to have a go through the &lt;a href="http://incubator.apache.org/ivy/doc.html"&gt;IVY DOC&lt;/a&gt; site before we discuss this matter in to more detail.&lt;/user-home&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependencies&gt;&lt;/info&gt;&lt;/ivy-module&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependency&gt;&lt;/dependencies&gt;&lt;/info&gt;&lt;/ivy-module&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-3040952899601666819?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/3040952899601666819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=3040952899601666819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/3040952899601666819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/3040952899601666819'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/05/ivy-dependency-manager-part1_19.html' title='IVY dependency manager (Part1 Introduction) Contd....'/><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://2.bp.blogspot.com/_rnnosU03F6U/Rk5gFue7sEI/AAAAAAAAABA/57DZgIR0Tfg/s72-c/ivyimage.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-5387358479744807166</id><published>2007-05-13T13:51:00.000+08:00</published><updated>2007-05-24T14:18:01.245+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IVY jayasoft dependency management'/><title type='text'>IVY dependency manager (Part1 Introduction)</title><content type='html'>Its a Sunday noon in Singapore. I just had a chat with Chirantha who is based on Royal Brunei these days. He just joined to our blog. Welcome chirantha. Awaiting few blogs from you on your mysql expertises :)&lt;br /&gt;&lt;br /&gt;This is an attempt to introduce our recently setup dependency repository. As a step forward to make full use of version controlled source management, we have started using our own internal artifacts repository for some time now.&lt;br /&gt;&lt;br /&gt;I try to split the topic in to three.&lt;br /&gt;1) IVY Dependency manager - Introduction.&lt;br /&gt;2) How to use our repository.&lt;br /&gt;3) How to publish artifacts to IVY.&lt;br /&gt;&lt;br /&gt;This week we will discuss on the ROADMAP to IVY :)&lt;br /&gt;Its been long time our engineers have been feeling of using a common repository for our artifacts. Having common dependency manager is good for many reasons. Especially we don't have to keep individual dependencies for each and every product. The version management is very easy. So it was decided to go for a repository internally. &lt;br /&gt;&lt;br /&gt;Now we need to decide the right choice. The main two candidates were &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; and &lt;a href="http://incubator.apache.org/ivy/"&gt;IVY&lt;/a&gt; . After several considerations we decided to vote for ivy. Lets discuss on what caused us to choose IVY for our repository.&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;We thought IVY is a handy light weight tool on it's own grounds.  &lt;/li&gt;&lt;li&gt;Considering the scope of our requirement, which we mingle with our own proprietary and open source artifacts we do not need to use maven ibiblio or any other out of box repositories.&lt;/li&gt;&lt;li&gt;We all are used to work with ant. The complexity in using maven with ant is a widely known fact! . Probably maven expects users to do everything using maven. Basically maven is a project management tool where IVY targets dependency management.  &lt;/li&gt;&lt;li&gt;The IVY support to ant is really good. Publishing artifacts to repository can be easily done through ant and IVY.&lt;/li&gt;&lt;/ul&gt;    &lt;p style="margin-bottom: 0in;"&gt;So we decided to use IVY for our own reasons. Maven has it's goods and bad so IVY too. For more comparisons refer &lt;a href="http://incubator.apache.org/ivy/doc/m2comparison.html"&gt;IVY site&lt;/a&gt;.  &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;So stay tuned with hsenidians for my next post on how hsenid is using IVY.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;BTW It is notable that IVY is still in apache incubator. I don't understand this. Though people used to compare IVY with Maven, they are not competitors :) . They are different tools and the level of scopes are different. So we mark our big +1 for IVY ;)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-5387358479744807166?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/5387358479744807166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=5387358479744807166' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5387358479744807166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5387358479744807166'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/05/ivy-dependency-manager-part1.html' title='IVY dependency manager (Part1 Introduction)'/><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-4844845394374641519.post-2600296956120502043</id><published>2007-05-12T04:44:00.000+08:00</published><updated>2008-11-19T04:56:38.284+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture Style'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Architecture'/><title type='text'>Software Architecture Series - Peer-to-peer Architecture</title><content type='html'>I thought of writing a series of posts on Software Architectures. In this first post, I will discuss Peer-to-peer (P2P) Architecture.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-uYH8wrV5VY/Rk_j5WmhvxI/AAAAAAAAAHA/DAoGA1VJ8dc/s1600-h/P2P.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_-uYH8wrV5VY/Rk_j5WmhvxI/AAAAAAAAAHA/DAoGA1VJ8dc/s320/P2P.JPG" alt="" id="BLOGGER_PHOTO_ID_5066518680274321170" border="0" /&gt;&lt;/a&gt;In a P2P architecture there's no notion of clients and servers; equal peer nodes show the behavior of both clients and servers.&lt;br /&gt;&lt;br /&gt;In a P2P architecture clients provide resources (bandwidth, storage space, computing power) and results in a more robust systm with data replicated over multiple peers with no single point of failure.&lt;br /&gt;&lt;br /&gt;Applications of P2P Architecture can be categorized into the following areas:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Communication and Collaboration - Chat/Irc, IM (Aol, Icq, Yahoo, Msn), Jabber &lt;/li&gt;&lt;li&gt; Distributed Computation - use peer computer processing power &lt;ul&gt;&lt;li&gt; Seti@home - Search for Extra Terrestrial Intelligence (SETI) &lt;/li&gt;&lt;li&gt; genome@home - understand gentic information  &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt; Database Systems &lt;ul&gt;&lt;li&gt; Local Relational Model (LRM) - relational queries to run across 1000s of computers &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt; Content Distribution  Infrastructure for sharing digital media and other data &lt;/li&gt;&lt;ul&gt;&lt;li&gt; Most P2P are under this category.  e.g. Napster, Publius, Gnutella, KaZaa, Freenet, MojoNation, Oceanstore, PAST, Chord, Scan, &lt;span class="twikiNewLink"&gt;FreeHaven&lt;/span&gt;, Groove, Mnemosyne &lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;I personally found the concept of contributing to searching for extra terrestrial intelligence and understanding genetic information by sharing ones PC resources interesting.&lt;br /&gt;&lt;br /&gt;A good example of a P2P application of today is BitTorrent [2].&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;[1] &lt;a href="http://www.spinellis.gr/pubs/jrnl/2004-ACMCS-p2p/html/AS04.html"&gt;A Survey of Peer-to-Peer Content Distribution Technologies&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="http://en.wikipedia.org/wiki/Bittorrent"&gt;Wikipedia (BitTorrent)&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-2600296956120502043?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/2600296956120502043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=2600296956120502043' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/2600296956120502043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/2600296956120502043'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/05/software-architecture-series-peer-to.html' title='Software Architecture Series - Peer-to-peer Architecture'/><author><name>Himath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://farm1.static.flickr.com/159/345855833_d49c9e6af4.jpg?v=0'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-uYH8wrV5VY/Rk_j5WmhvxI/AAAAAAAAAHA/DAoGA1VJ8dc/s72-c/P2P.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-2985527760215717668</id><published>2007-05-11T04:56:00.000+08:00</published><updated>2007-05-24T14:30:10.218+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Time Management'/><title type='text'>Getting Things Done</title><content type='html'>Is there a Silver Bullet to Time Management? This is a question I have been trying to answer for quite some. Now I have come to the conclusion that there is no such silver bullet but each person need to choose the best method that suits him or her.&lt;br /&gt;&lt;br /&gt;We've come a long way since simple TODO lists. Infact there are quite a few modern ways of time management. Stephen Covey introduces a great method in his book "&lt;a href="http://en.wikipedia.org/wiki/The_Seven_Habits_of_Highly_Effective_People"&gt;The Seven Habits of Highly Effective People&lt;/a&gt;" and it's sequel "&lt;a href="http://covey.ru/en/first-things-first.html"&gt;First Things First&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://covey.ru/images/first-things-first-en.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 215px; height: 258px;" src="http://covey.ru/images/first-things-first-en.jpg" alt="" border="0" /&gt;&lt;/a&gt;I liked the concept of focusing on the important things and not the urgent things that we tend to focus on. Just knowing these principles could improve one's time management a lot.&lt;br /&gt;&lt;br /&gt;Tony Robbins also has his time management method called "Time of Your Life". Here he focusses on the importance chunking and grouping of related tasks together and being emotional about the achievement of the tasks. This method is more heavy weight than the Covey method and for someone who's learning it it could take about 1 hour a day just to do the planning. So to use this method one has to be really disciplined.&lt;br /&gt;&lt;br /&gt;A recent time management method I stumbled across is called "&lt;a href="http://en.wikipedia.org/wiki/Getting_Things_Done"&gt;Getting Things Done&lt;/a&gt;" by David Allen.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.davidco.com/store/images/full/d_119.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://www.davidco.com/store/images/full/d_119.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I got an eBook and yet to apply the whole book. At least I've been using his concepts for my email which, is in hundreds per day. So far this has been the most effective method I've used with my emails.&lt;br /&gt;&lt;br /&gt;This is simple and light weight. Unlike the previous two methods, you don't have to spend too much extra time doing the planning.&lt;br /&gt;&lt;br /&gt;I used to delegate a lot of tasks to lot of people and found it difficult to keep track of all tasks. This is expecially difficult as some people tend to forget. Using this method it's really easy to keep track of delegated (Waiting for Tasks) .&lt;br /&gt;&lt;br /&gt;Well, in conclusion I would say there's no silver bullet but knowing all these techniques would really help as in this age of balancing 1000s of tasks we cannot only depend on todo lists anymore.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-2985527760215717668?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/2985527760215717668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=2985527760215717668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/2985527760215717668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/2985527760215717668'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/05/getting-things-done.html' title='Getting Things Done'/><author><name>Himath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://farm1.static.flickr.com/159/345855833_d49c9e6af4.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-5463925598096599198</id><published>2007-05-09T12:06:00.000+08:00</published><updated>2008-11-19T04:56:38.473+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Toastmasters'/><category scheme='http://www.blogger.com/atom/ns#' term='random thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='communication skills'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Architecture'/><title type='text'>Random thoughts - Software Architecture to Toastmasters</title><content type='html'>Last two days have been quite warm here. Yesterday the temperature rose to about 94F. This is infact hotter than a typical day in Colombo.&lt;br /&gt;&lt;br /&gt;I've been working on a briefing for Carnegie Mellon and subject was &lt;span style="font-style: italic;"&gt;Responsibilities of Software Architects&lt;/span&gt;. This is a topic where there are many definitions. Search the web and you'll probably find 100s of defintions. I did a little bit of study my self. At the end I could identify 4 main responsibilities of Software Architects. Hundreds of specfic responsibilities could be categorized under these. The 4 categories of responsibilities are:&lt;br /&gt;&lt;p class="MsoNormal"&gt;  &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Architecting and maintaining the architecture&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Communicating (especially the architecture) with all stake holders&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;Providing Technical Leadership to the project&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Acting as a Consultant&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;What surprised me was that except for the first role, all other roles involved communication and leadership to a very high extent. Simply said a good architect must be a leader and a powerful communicator as much as have the requried technical skills.&lt;br /&gt;&lt;br /&gt;This is something most technical people ignore. This brings me back to the title. I joined a Toastmasters club about a month ago and today I did my &lt;a href="http://himathsblog.blogspot.com/2007/05/ice-breaker.html"&gt;first prepared speech&lt;/a&gt;. Toastmasters is an excellent way to improve your communication skills which I recommend to all.&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-uYH8wrV5VY/RkFILeNwm6I/AAAAAAAAABE/IbtUqz9oOU0/s400/Logo.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://1.bp.blogspot.com/_-uYH8wrV5VY/RkFILeNwm6I/AAAAAAAAABE/IbtUqz9oOU0/s400/Logo.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b style=""&gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-5463925598096599198?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/5463925598096599198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=5463925598096599198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5463925598096599198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/5463925598096599198'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/05/random-thoughts-software-architecture.html' title='Random thoughts - Software Architecture to Toastmasters'/><author><name>Himath</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://farm1.static.flickr.com/159/345855833_d49c9e6af4.jpg?v=0'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-uYH8wrV5VY/RkFILeNwm6I/AAAAAAAAABE/IbtUqz9oOU0/s72-c/Logo.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4844845394374641519.post-357489867628324713</id><published>2007-05-07T23:12:00.000+08:00</published><updated>2008-11-19T04:56:38.715+08:00</updated><title type='text'>Marking 10th year anniversary</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sQZB-tpUtXQ/Rj9J1lsnIuI/AAAAAAAAAAM/1-NhWYetNWs/s1600-h/team4.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_sQZB-tpUtXQ/Rj9J1lsnIuI/AAAAAAAAAAM/1-NhWYetNWs/s320/team4.jpg" alt="" id="BLOGGER_PHOTO_ID_5061845691188847330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As we hsenidians marking our 10th year of successful run, it is time to move on. The best part of the hsenid culture is adopting the new methodologies.  There are lot of examples made in the past. The way we adopted the open source culture and AGILE process was one of those such examples.&lt;br /&gt;So what's now? We did smell the much hyped(Hype is a bad word though,&lt;a href="http://www.oreillynet.com/pub/au/27"&gt;Tim O'Reilly&lt;/a&gt; will tell more &lt;a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html"&gt;here&lt;/a&gt;) web2.0 as an important entity in coming years.  We have shown our commitment through &lt;a href="http://www.web2expo.com/"&gt;web2.0 expo&lt;/a&gt; last month. Oh yes more pictures from our &lt;a href="http://orangehrm.blogspot.com/2007/04/web20-expo-exhibition-day-1.html"&gt;orangehrm blog&lt;/a&gt;. (Folks from oragehrm will take this for sure ;)&lt;br /&gt;&lt;br /&gt;So hsenidians from various parts of the world (You can take &lt;a href="http://www.hsenid.com/contactus.html"&gt;USA, Malasia, Singapore, Brunei, Kuwait, India and Sri Lanka &lt;/a&gt;of course !  as those various parts ) feel better to maintain our own developer blog. We know, we expertise on certain areas and its time to pay back to the world of web, which helped our way along last 6, 7 years .(Innocent folks , please trust me ;) )&lt;br /&gt;&lt;br /&gt;So whats next, we will keep on blogging. Of course you can expect good feeds from our &lt;a href="http://hsenidmobile.com/our_team.html"&gt;experts'&lt;/a&gt; areas !&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4844845394374641519-357489867628324713?l=hsenidians.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsenidians.blogspot.com/feeds/357489867628324713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4844845394374641519&amp;postID=357489867628324713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/357489867628324713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4844845394374641519/posts/default/357489867628324713'/><link rel='alternate' type='text/html' href='http://hsenidians.blogspot.com/2007/05/marking-10th-year-anniversary.html' title='Marking 10th year anniversary'/><author><name>hsenidians</name><uri>http://www.blogger.com/profile/00759296857684951527</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/_sQZB-tpUtXQ/Rj9J1lsnIuI/AAAAAAAAAAM/1-NhWYetNWs/s72-c/team4.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
