<?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-21174382</id><updated>2012-01-04T06:55:21.533-08:00</updated><category term='performance'/><category term='Patterns'/><category term='J2EE'/><title type='text'>An Agile Architect's Notes</title><subtitle type='html'>Collection of my thought bits and bits of other's thoughts on Software Architecture, Java and J2EE technology and related subjects</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21174382.post-46624212939243908</id><published>2011-12-22T14:52:00.001-08:00</published><updated>2011-12-22T14:52:23.280-08:00</updated><title type='text'></title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-46624212939243908?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/46624212939243908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=46624212939243908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/46624212939243908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/46624212939243908'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2011/12/blog-post.html' title=''/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-8414858343675274629</id><published>2009-09-08T21:09:00.000-07:00</published><updated>2009-09-08T21:16:56.419-07:00</updated><title type='text'>Java Vs C performance comparison</title><content type='html'>When Java was gaining prominence a few years ago, the debate around performance of applications built using Java/C/C++ used to happen quite often.  However when Java took over the world, the performance debate nearly died down even though C/C++ applications play fairly well when it comes to performance.  With the above context of performance, I recently came across the article from &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;Azul&lt;/span&gt; systems comparing the instances where Java applications fair well as compared to C/C++ and vice &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-error"&gt;versa&lt;/span&gt;. Read the complete article &lt;a href="http://blogs.azulsystems.com/cliff/2009/09/java-vs-c-performance-again.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-8414858343675274629?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/8414858343675274629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=8414858343675274629' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/8414858343675274629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/8414858343675274629'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2009/09/java-vs-c-performance-comparison.html' title='Java Vs C performance comparison'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-5489402761394150568</id><published>2009-02-03T05:07:00.000-08:00</published><updated>2009-02-03T05:17:51.336-08:00</updated><title type='text'>TSVN Icon Overlays does not appear on explorer</title><content type='html'>Tortoise SVN behaves sometimes  pretty weird but not with respect to functionality but with display. Recently while playing with TSVN 1.5.5 and found that it is not displaying icons to show the file/folder status. I am running it on WinXP with sufficient memory on it.&lt;br /&gt;&lt;br /&gt;In fact, displaying the status through Icon overlays is one of the key features with TSVN.    After googling around for sometime and trying various options, zeroed down on one.   The solution that worked for me included changing the "Cache status"  from  "Default" to "Shell".&lt;br /&gt;&lt;br /&gt;Following image would show the new status. One can access Cache status by right clicking on the windows explorer --&gt; Tortoise SVN --&gt; Settings --&gt; Icon Overlays&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_kYO_CuRN3tA/SYhDYfTEC7I/AAAAAAAAAK4/tQQtBL3gbeo/s1600-h/Icon+Overlay.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 215px;" src="http://4.bp.blogspot.com/_kYO_CuRN3tA/SYhDYfTEC7I/AAAAAAAAAK4/tQQtBL3gbeo/s320/Icon+Overlay.JPG" alt="" id="BLOGGER_PHOTO_ID_5298559049598766002" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-5489402761394150568?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/5489402761394150568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=5489402761394150568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/5489402761394150568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/5489402761394150568'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2009/02/tsvn-icon-overlays-does-not-appear-on.html' title='TSVN Icon Overlays does not appear on explorer'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_kYO_CuRN3tA/SYhDYfTEC7I/AAAAAAAAAK4/tQQtBL3gbeo/s72-c/Icon+Overlay.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-2628957304617117894</id><published>2009-01-15T08:22:00.000-08:00</published><updated>2009-01-15T08:40:34.930-08:00</updated><title type='text'>Subversion Installation - Step by Step Tutorial</title><content type='html'>Recently I played around installing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SVN&lt;/span&gt; 1.5.1 with Apache 2.2.&lt;br /&gt;&lt;br /&gt;Following paragraph provides detailed steps&lt;br /&gt;1.    Install  Apache 2.2&lt;br /&gt;2.    During subversion installation ensure that you choose the proper Binding  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ie&lt;/span&gt;. Apache 2.2 (in our case)&lt;br /&gt;3.    Using the windows explorer, go to the installation directory of Subversion (usually c:\program files\Subversion) and find the files /&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;httpd&lt;/span&gt;/mod_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;dav&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;svn&lt;/span&gt;.so and mod_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;authz&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;svn&lt;/span&gt;.so. Copy these files to the Apache modules directory (usually c:\program files\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;apache&lt;/span&gt; group\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;apache&lt;/span&gt;2\modules ).&lt;br /&gt;4.    Copy the file /bin/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;libdb&lt;/span&gt;*.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;dll&lt;/span&gt; and /bin/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;intl&lt;/span&gt;3_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;svn&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;dll&lt;/span&gt; from the Subversion installation directory to the Apache bin directory.&lt;br /&gt;5.    Edit Apache's configuration file (usually C:\Program Files\Apache Group\Apache2\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;conf&lt;/span&gt;\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;httpd&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;conf&lt;/span&gt;) with a text editor such as Notepad and make the following changes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;Uncomment&lt;/span&gt; (remove the '#' mark) the following lines: &lt;/span&gt;&lt;br /&gt;      #&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;LoadModule&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;dav&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;fs&lt;/span&gt;_module modules/mod_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;dav&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;fs&lt;/span&gt;.so&lt;br /&gt;      #&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;LoadModule&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;dav&lt;/span&gt;_module modules/mod_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;dav&lt;/span&gt;.so&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add the following two lines to the end of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;LoadModule&lt;/span&gt; section. &lt;/span&gt;&lt;br /&gt;      &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;LoadModule&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;dav&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;svn&lt;/span&gt;_module modules/mod_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;dav&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;svn&lt;/span&gt;.so&lt;br /&gt;      &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;LoadModule&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;authz&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;svn&lt;/span&gt;_module modules/mod_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;authz&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;svn&lt;/span&gt;.so&lt;br /&gt;6.    Now you are ready to check out the files.  Create a local working folder and do an initial check out.  Create the following folders    trunk, branches and tags.  Check in these folders into the repository.  The main directories that you need to add to repository for the first time should go into   trunk folder.&lt;br /&gt;&lt;br /&gt;Whenever one wants to tag the code,  you can do so by   adding    tags/&lt;tag&gt; to the repository URL.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configuration&lt;/span&gt;&lt;br /&gt;Now you have set up Apache and Subversion, but Apache doesn't know how to handle Subversion clients like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;TortoiseSVN&lt;/span&gt; yet. To get Apache to know which URL will be used for Subversion repositories you have to edit the Apache configuration file (usually located in c:\program files\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;apache&lt;/span&gt; group\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;apache&lt;/span&gt;2\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;conf&lt;/span&gt;\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;httpd&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;conf&lt;/span&gt;) with any text editor you like (e.g. Notepad):&lt;br /&gt;1.    At the end of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;config&lt;/span&gt; file add the following lines:&lt;br /&gt;&lt;location&gt;&lt;br /&gt;DAV &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;svn&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;SVNListParentPath&lt;/span&gt; on&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;SVNParentPath&lt;/span&gt; D:\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;SVN&lt;/span&gt;&lt;br /&gt;#&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;SVNIndexXSLT&lt;/span&gt; "/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;svnindex&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;xsl&lt;/span&gt;"&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;AuthType&lt;/span&gt; Basic&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;AuthName&lt;/span&gt; "Subversion repositories"&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;AuthUserFile&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;passwd&lt;/span&gt;&lt;br /&gt;#&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;AuthzSVNAccessFile&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;svnaccessfile&lt;/span&gt;&lt;br /&gt;Require valid-user&lt;br /&gt;&lt;/location&gt;&lt;br /&gt;This configures Apache so that all your Subversion repositories are physically located below D:\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;SVN&lt;/span&gt; (Say). The repositories are served to the outside world from the URL: http://MyServer/svn/ . Access is restricted to known users/passwords listed in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;passwd&lt;/span&gt; file.&lt;br /&gt;&lt;br /&gt;Ensure that you create the repository at D:\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;SVN&lt;/span&gt; by using the following command:&lt;br /&gt;  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;svnadmin&lt;/span&gt; create D:\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;SVN&lt;/span&gt;&lt;br /&gt;The above command assumes that there is a folder called “&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;SVN&lt;/span&gt;” under D:\&lt;br /&gt;&lt;br /&gt;2.    To create the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;passwd&lt;/span&gt; file, open the command prompt (DOS-Box) again, change to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;apache&lt;/span&gt;2 folder (usually c:\program files\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;apache&lt;/span&gt; group\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;apache&lt;/span&gt;2) and create the file by entering&lt;br /&gt;3.    bin\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_67"&gt;htpasswd&lt;/span&gt; -c &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_68"&gt;passwd&lt;/span&gt; &lt;username&gt;&lt;br /&gt;This will create a file with the name &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_69"&gt;passwd&lt;/span&gt; which is used for authentication. Additional users can be added with&lt;br /&gt;bin\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_70"&gt;htpasswd&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_71"&gt;passwd&lt;/span&gt; &lt;username&gt;&lt;br /&gt;4.    Restart the Apache service again.&lt;br /&gt;You can test your configuration by using: http://localhost:8090/svn/&lt;br /&gt;It assumes that  Apache Server is running on 8090 port. In my case, I had something else running on 80, so configured Apache server to run on 8090&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Following two sites gives wealth of information about "Branching" &lt;/span&gt;&lt;br /&gt;http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-branchtag.html&lt;br /&gt;&lt;br /&gt;http://drc-dev.ohiolink.edu/wiki/TortoiseSVNHowTo&lt;/username&gt;&lt;/username&gt;&lt;/tag&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-2628957304617117894?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/2628957304617117894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=2628957304617117894' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2628957304617117894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2628957304617117894'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2009/01/subversion-installation-step-by-step.html' title='Subversion Installation - Step by Step Tutorial'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-2748990419778404789</id><published>2008-08-02T09:47:00.001-07:00</published><updated>2008-08-02T09:47:46.623-07:00</updated><title type='text'>Web 3.0 ?</title><content type='html'>&lt;p&gt;Many of are still grappling with Web 2.0 and most of the traditional companies are still in Web 1.0. But &lt;a href="http://www.techcrunchit.com/2008/08/01/welcome-to-web-30-now-your-other-computer-is-a-data-center/"&gt;this post&lt;/a&gt; published on Tech Crunch is already making headway into Web 3.0. &lt;/p&gt;  &lt;p&gt;We need to stop walking fast and need to run to catch up with this new way of life. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-2748990419778404789?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/2748990419778404789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=2748990419778404789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2748990419778404789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2748990419778404789'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2008/08/web-30.html' title='Web 3.0 ?'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-7829668467927938759</id><published>2008-06-21T21:46:00.001-07:00</published><updated>2008-06-21T21:46:16.926-07:00</updated><title type='text'>Can software component creation be industrialized ?</title><content type='html'>&lt;p&gt;One of the best examples of industrialization in this century includes car manufacturing, and invention of assembly lines.&amp;#160; Each parts of the car gets&amp;#160; manufactured somewhere else and finally gets assembled at one place. The parts are made with such a perfection that even robots can put together various parts in no time.&amp;#160; You might be wondering, yeah I know this and everybody knows this fact, how is this related to this software architecture blog ?&amp;#160;&amp;#160; Okay, here is what I wanted to ask, can the software be developed in a similar manner as a car gets manufactured ?&amp;#160; i.e. various components can be designed and developed at various places, and shipped to one location. Some automated tools can in turn assemble these components to build an application. Finally a final test can be done by the QA team before releasing the product.&amp;#160; I believe it is difficult to implement this idea in a software industry keeping our current understanding and knowledge in mind, however it is not impossible.&amp;#160; &lt;a href="http://www.sandia.gov/LabNews/LN09-10-99/super_story.html"&gt;Here is an article&lt;/a&gt; that provides more insight into the topic I am discussing. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-7829668467927938759?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/7829668467927938759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=7829668467927938759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/7829668467927938759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/7829668467927938759'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2008/06/can-software-component-creation-be.html' title='Can software component creation be industrialized ?'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-2801958944869329858</id><published>2008-06-21T08:58:00.001-07:00</published><updated>2008-06-21T08:58:30.121-07:00</updated><title type='text'>Loosely coupled, reusable and Replaceable components</title><content type='html'>&lt;p&gt;I am sure as software developers we know the importance of designing and developing reusable and loosely coupled components. Recently in the XP discussion forum I came across a discussion on the topic of &amp;quot;Building Agile applications using replaceable components&amp;quot;. It drew my attention and followed the thread to understand where it was heading. Basically the author challenges the basic assumption behind &amp;quot;loosely coupled components&amp;quot;. Instead of giving my version of the details, I would let his article speak about the thoughts. &lt;/p&gt;  &lt;p&gt;Here are couple of links from the author(Raju's) webpage explaining loosely coupled, replaceable components. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.cbsdf.com/ps_blog/HSM-LC.htm"&gt;Hierarchy of swappable modules&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.cbsdf.com/misc_docs/Raju-SoA.htm"&gt;Loose coupling and SOA&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.cbsdf.com//ps_blog/WhyRepCom.htm"&gt;How to build an application using replaceable components&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also &lt;a href="http://www.cbsdf.com/technologies/software-irony.htm"&gt;this article&lt;/a&gt; challenges the assumption that Java could be used to build loosely coupled, replaceable components. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-2801958944869329858?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/2801958944869329858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=2801958944869329858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2801958944869329858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2801958944869329858'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2008/06/loosely-coupled-reusable-and.html' title='Loosely coupled, reusable and Replaceable components'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-1049430143703105657</id><published>2008-02-28T02:36:00.001-08:00</published><updated>2008-02-29T04:29:40.003-08:00</updated><title type='text'>Steps to remember during tradeoff analysis</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span style="font-family:arial;"&gt;It is important for all software architects  to be aware of conducting the tradeoff analysis on the "Non Functional Requirements" (NFRs). It is better to have a handy tradeoff guide available during the design phase.&lt;br /&gt;The tradeoff guide could be built either based on one's own experience or by taking help from other architects/resources.  It would be good, if the guide covers most of the architecture principles and the non functional requirements (also called -ilities)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;I would recommend following steps while doing tradeoff analysis&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Understand the customer's requirement and convert it into SMART objective&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Prioritize the requirements (NFRs) by having continuous collaboration with the customer&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Finally, using the tradeoff analysis guide,  recommend the final design and educate the customer about the impact of the design on the priorities. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-1049430143703105657?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/1049430143703105657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=1049430143703105657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/1049430143703105657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/1049430143703105657'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2008/02/steps-to-remember-during-tradeoff.html' title='Steps to remember during tradeoff analysis'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-6660617885864448843</id><published>2008-02-27T02:55:00.001-08:00</published><updated>2008-02-29T04:34:42.405-08:00</updated><title type='text'>Open Source is not free</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;All of us know that the &lt;a href="http://en.wikipedia.org/wiki/Open-source_software"&gt;Open source softwares(OSS)&lt;/a&gt; are available free of cost to download, modify, distribute and even sell this to our customers and make money. &lt;br /&gt;&lt;br /&gt;Many companies wants to use OSS in their product development/projects  thinking that they could save money by choosing OSS.  In reality, choosing the right OSS helps companies in saving money, and at the same time the wrong ones would incur cost to them.&lt;br /&gt;&lt;br /&gt;Check this &lt;a href="http://www.fcw.com/print/11_35/news/90647-1.html"&gt;article &lt;/a&gt;out to know why OSS is not free !!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-6660617885864448843?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/6660617885864448843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=6660617885864448843' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/6660617885864448843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/6660617885864448843'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2008/02/open-source-is-not-free.html' title='Open Source is not free'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-2579974888693770010</id><published>2008-02-27T01:54:00.001-08:00</published><updated>2008-02-27T01:54:25.768-08:00</updated><title type='text'>Premature Optimization and the evil</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Right from the day I have started designing applications, I have been hearing people quoting the famous words,specifically dealing with "performance".&lt;br/&gt; &lt;blockquote&gt;Premature optimization is root of all evil  - Sir Tony Hoare (popularized by Donald Knuth)&lt;/blockquote&gt; &lt;br/&gt;As we aware, the words like "Premature", "Optimization" and "evil" these are generic terms and open for interpretations with no &lt;a href='http://en.wikipedia.org/wiki/SMART_%28project_management%29'&gt;SMART objective&lt;/a&gt; associated with them. Developer to PM to architects, each interprets the above quote in their own way and, sometimes using it to their own advantage as and when needed. &lt;br/&gt;&lt;br/&gt;let me share my perspective of the above quote.  "Premature optimization" has two important hidden pointers. First one, the "time/period" i.e. how much "premature" is acceptable. The second pointer is "quantity" i.e. how much "optimization" is necessary.  &lt;br/&gt;&lt;br/&gt;Let me start with the second pointer "Optimization". Optimization of any application could be done at various stages. During the design stage, implementation and pre release. So, what stage is ideal to do performance optimization ? Or, should it be done continuously ?&lt;br/&gt;&lt;br/&gt;My experience shows that following steps are needed during performance optimization&lt;br/&gt;&lt;ul&gt;&lt;li&gt;performance criteria needs to be well understood at the beginning of the project, &lt;br/&gt;&lt;/li&gt;&lt;li&gt;it should be explained to all team members(means testers included)&lt;/li&gt;&lt;li&gt;Good design and coding guidelines(ex: proper use of String Vs StringBuffer, use of sets, hashmaps, etc) around performance needs to be created and taught to the development team&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Each component/module needs to be designed to satisfy the ground rule created at the beginning around performance, and excess tuning needs to be avoided. &lt;br/&gt;&lt;/li&gt;&lt;li&gt;Check points at regular intervals should be created and performance testing should be done&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;Summary of my understanding around premature optimization quote is, &lt;br/&gt;&lt;ul&gt;&lt;li&gt;Optimizing design,code is a continuous process happening throughout the development cycle.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;excess application optimization at the beginning of the project should be avoided &lt;/li&gt;&lt;/ul&gt;My thoughts mentioned above are also reflected pretty much in this &lt;a href='http://www.acm.org/ubiquity/views/v7i24_fallacy.html'&gt;artice&lt;/a&gt;, and the author has gone in depth and has given a good explanation around premature optimization. &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-2579974888693770010?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/2579974888693770010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=2579974888693770010' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2579974888693770010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2579974888693770010'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2008/02/premature-optimization-and-evil.html' title='Premature Optimization and the evil'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-3149308866865527056</id><published>2008-02-22T04:05:00.001-08:00</published><updated>2008-02-22T04:05:55.620-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='J2EE'/><category scheme='http://www.blogger.com/atom/ns#' term='Patterns'/><title type='text'>Patterns to improve performance in J2EE Applications</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;br/&gt;&lt;a href='http://www.precisejava.com/javaperf/j2ee/Patterns.htm'&gt;Precisejava&lt;/a&gt; provides a list of patterns that would improve performance in J2EE applications. The author explains each of the patterns with good examples and reason behind improved performance. &lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.precisejava.com/javaperf/j2ee/Patterns.htm'&gt;&lt;br/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-3149308866865527056?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/3149308866865527056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=3149308866865527056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/3149308866865527056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/3149308866865527056'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2008/02/patterns-to-improve-performance-in-j2ee.html' title='Patterns to improve performance in J2EE Applications'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-9184589156656525724</id><published>2008-02-16T15:38:00.000-08:00</published><updated>2008-02-16T15:53:51.085-08:00</updated><title type='text'>Amazon web services goes down</title><content type='html'>It is unbelievable but true ! Amazon Web Services suffered a major outage this morning, affecting the thousands of Websites that rely on its storage (S3) and cloud computing (EC2) services.  &lt;a href="http://www.techcrunch.com/2008/02/15/amazon-web-services-goes-down-takes-many-startup-sites-with-it/"&gt;Here &lt;/a&gt;is the whole story&lt;br /&gt;&lt;br /&gt;When I first got introduced to S3 and saw the demo of the concept with the high availability architecture behind S3, I felt this is the thing of the future. Now, I am thinking, we still have a long way to go while building highly scalable and available applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-9184589156656525724?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/9184589156656525724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=9184589156656525724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/9184589156656525724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/9184589156656525724'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2008/02/amazon-web-services-goes-down.html' title='Amazon web services goes down'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-5448982358549530920</id><published>2008-02-07T21:30:00.000-08:00</published><updated>2008-02-07T21:34:31.622-08:00</updated><title type='text'>101 design pattern tips</title><content type='html'>This &lt;a href="http://sourcemaking.com/design-patterns-and-tips"&gt;site&lt;/a&gt; has a consolidated list of 101 design patterns. The author has put a lot of effort in organizing the patterns into different groups (GOF + others). Upon clicking on each of the patterns, it provides the motivation, mechanics with an example.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-5448982358549530920?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/5448982358549530920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=5448982358549530920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/5448982358549530920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/5448982358549530920'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2008/02/101-design-pattern-tips.html' title='101 design pattern tips'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-1525586076662216089</id><published>2008-01-31T22:45:00.000-08:00</published><updated>2008-01-31T22:56:04.660-08:00</updated><title type='text'>Encapsulation need not be informaton hiding</title><content type='html'>Encapsulation and information hiding are the most mis-used word while describing a component based architecture. Encapsulation refers to the bundling of data with the methods that operate on that data. Often that definition is misconstrued to mean that the data is somehow hidden. In Java, one could have encapsulated data that is not hidden at all.&lt;br /&gt;&lt;br /&gt;More information about why Encapsulation is not information hiding is explained &lt;a href="http://www.javaworld.com/javaworld/jw-05-2001/jw-0518-encapsulation.html"&gt;here &lt;/a&gt;very clearly. &lt;br /&gt;&lt;br /&gt;On a similar note, following principles go hand in hand very closely:&lt;br /&gt;&lt;br /&gt;1. Encapsulation&lt;br /&gt;2. Modular design&lt;br /&gt;3. Information hiding&lt;br /&gt;4. Isolation&lt;br /&gt;5. Separation of concerns&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-1525586076662216089?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/1525586076662216089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=1525586076662216089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/1525586076662216089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/1525586076662216089'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2008/01/encapsulation-need-not-be-informaton.html' title='Encapsulation need not be informaton hiding'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-2313700185472706324</id><published>2007-09-24T01:33:00.000-07:00</published><updated>2007-09-24T01:34:45.423-07:00</updated><title type='text'>Service Oriented Network Architecture</title><content type='html'>&lt;a href="http://www.ebizq.net/hot_topics/soa/features/8234.html?&amp;amp;pp=1"&gt;Here&lt;/a&gt; is a very informative article on Service oriented architecture principles and SO Network Architecture&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-2313700185472706324?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/2313700185472706324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=2313700185472706324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2313700185472706324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2313700185472706324'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/09/service-oriented-network-architecture.html' title='Service Oriented Network Architecture'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-4641985550717363992</id><published>2007-09-03T06:56:00.000-07:00</published><updated>2007-09-03T07:05:11.865-07:00</updated><title type='text'>Biggest mistakes in Web design</title><content type='html'>If we visit any website, and if we can stay for more than 10 seconds then chances of revisiting the same website is more, else we may not visit that website again.    What makes us to stay or leave with a website is decide by the usability experts of the website.  If the users cannot get what they want in a website in 10 seconds, they would leave.   If you want to test this, check out your own browsing habits ...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.webpagesthatsuck.com/biggest-mistakes-in-web-design-1995-2015.html"&gt;here&lt;/a&gt; is a informative website pointing out various things to keep in mind while designing websites. Vincent seems to have done extensive research on usability and keeps the website live.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-4641985550717363992?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/4641985550717363992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=4641985550717363992' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/4641985550717363992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/4641985550717363992'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/09/biggest-mistakes-in-web-design.html' title='Biggest mistakes in Web design'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-5257399226916457611</id><published>2007-08-28T04:28:00.001-07:00</published><updated>2007-08-28T04:30:24.981-07:00</updated><title type='text'>Step by Step procedure to install Tomcat 6</title><content type='html'>&lt;a href="http://www.coreservlets.com/Apache-Tomcat-Tutorial/"&gt;This&lt;/a&gt; is the first website that I have come across so far,  providing detailed installation instruction on Apache Tomcat 6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-5257399226916457611?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/5257399226916457611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=5257399226916457611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/5257399226916457611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/5257399226916457611'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/08/step-by-step-procedure-to-install.html' title='Step by Step procedure to install Tomcat 6'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-3613496334507389613</id><published>2007-08-28T01:15:00.000-07:00</published><updated>2007-08-28T01:18:27.939-07:00</updated><title type='text'>Ola Bini in Bangalore</title><content type='html'>&lt;a href="http://www.ola-bini.blogspot.com/"&gt;Ola Bini&lt;/a&gt; core committer of JRuby is in Bangalore.  &lt;a href="http://thoughtworks.com"&gt;Thoughtworks&lt;/a&gt; would be hosting this event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-3613496334507389613?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/3613496334507389613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=3613496334507389613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/3613496334507389613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/3613496334507389613'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/08/ola-bini-in-bangalore.html' title='Ola Bini in Bangalore'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-693693582440981975</id><published>2007-08-27T01:48:00.000-07:00</published><updated>2007-10-04T02:58:45.559-07:00</updated><title type='text'>Architecture lingo</title><content type='html'>Being in the architect's world, I keep hearing so many different types of  Architecture. I thought I would list them here and keep updating this post as and when I hear a new type . Many of the listed architectures could be related to one another, subsets, supersets of each other. My intention is to just list them without worrying how they are related to each other !!&lt;br /&gt;&lt;br /&gt;(Not in any specific order)&lt;br /&gt;1. Business Architecture (goes hand in hand with Enterprise Architecture)&lt;br /&gt;2. Application Architecture&lt;br /&gt;3. Information Architecture/Information Management Architecture&lt;br /&gt;4. Technical Architecture&lt;br /&gt;5. Enterprise Architecture&lt;br /&gt;6. Solution Architecture&lt;br /&gt;7. Data Architecture&lt;br /&gt;8. System Architecture&lt;br /&gt;9. Infrastructure Architecture&lt;br /&gt;10. Development Architecture&lt;br /&gt;11. Execution Architecture&lt;br /&gt;12. Operations Architecture&lt;br /&gt;13. Population Architecture (related with DataWearhousing)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-693693582440981975?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/693693582440981975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=693693582440981975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/693693582440981975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/693693582440981975'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/08/architecture-lingo.html' title='Architecture lingo'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-330561169468162070</id><published>2007-08-26T22:20:00.000-07:00</published><updated>2007-08-26T22:23:53.087-07:00</updated><title type='text'>Manipulating the data in temporary tables</title><content type='html'>The question asked by Sophie was "&lt;em&gt;Can you use a Stored Procedure to open a table and copy data to a sort of virtual table (or a records set) so that you can change the values with and not affect the actual data in the actual table. And then return the results of the virtual table? Thanks!"&lt;/em&gt;     &lt;br /&gt;&lt;br /&gt;The solution,  &lt;span style="font-style: italic;"&gt;Yes it is possible to do it   &lt;/span&gt;is explained in detail &lt;a href="http://www.sqlteam.com/article/temporary-tables"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-330561169468162070?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/330561169468162070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=330561169468162070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/330561169468162070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/330561169468162070'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/08/manipulating-data-in-temporary-tables.html' title='Manipulating the data in temporary tables'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-3504487593362158916</id><published>2007-08-23T21:54:00.000-07:00</published><updated>2007-08-23T21:56:20.398-07:00</updated><title type='text'>History of Javascript and overview of Client and Server Side scripts</title><content type='html'>&lt;a href="http://www.devarticles.com/c/a/JavaScript/Client-side-and-Server-side-JavaScript/"&gt;This&lt;/a&gt; article provides the history of javascript and the different types(client side, server side and core)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-3504487593362158916?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/3504487593362158916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=3504487593362158916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/3504487593362158916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/3504487593362158916'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/08/history-of-javascript-and-overview-of.html' title='History of Javascript and overview of Client and Server Side scripts'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-2586630975638573167</id><published>2007-07-21T20:56:00.000-07:00</published><updated>2008-12-11T18:30:50.304-08:00</updated><title type='text'>Web trends in 2007</title><content type='html'>Here is a cool and cute image depicting web trends in 2007. Looks like Web 2.0 would become even more popular in coming months !!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_kYO_CuRN3tA/RqLWJ_5d_sI/AAAAAAAAAAY/mzfAPr5wkrw/s1600-h/iA_WebTrends_2007_2_1600x1024.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_kYO_CuRN3tA/RqLWJ_5d_sI/AAAAAAAAAAY/mzfAPr5wkrw/s320/iA_WebTrends_2007_2_1600x1024.gif" alt="" id="BLOGGER_PHOTO_ID_5089865996141723330" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-2586630975638573167?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/2586630975638573167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=2586630975638573167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2586630975638573167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/2586630975638573167'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/07/web-trends-in-2007.html' title='Web trends in 2007'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_kYO_CuRN3tA/RqLWJ_5d_sI/AAAAAAAAAAY/mzfAPr5wkrw/s72-c/iA_WebTrends_2007_2_1600x1024.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-510061757257788456</id><published>2007-04-17T21:43:00.001-07:00</published><updated>2007-04-17T21:43:16.095-07:00</updated><title type='text'>Scaling without a Database</title><content type='html'>Found this nice article on "&lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=201960"&gt;Scaling web application without a Database&lt;/a&gt;". Really thought provoking !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-510061757257788456?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/510061757257788456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=510061757257788456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/510061757257788456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/510061757257788456'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/04/scaling-without-database.html' title='Scaling without a Database'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-774056357597961845</id><published>2007-02-27T00:53:00.000-08:00</published><updated>2007-02-27T00:55:05.498-08:00</updated><title type='text'>CORBA  Vs Web Services</title><content type='html'>I came across this nice &lt;a href="http://www2002.org/CDROM/alternate/395/"&gt;article&lt;/a&gt; bringing out the clear details about CORBA and Web Services. One of the best articles that I came across so far on this topic&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-774056357597961845?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/774056357597961845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=774056357597961845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/774056357597961845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/774056357597961845'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/02/corba-vs-web-services.html' title='CORBA  Vs Web Services'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-1162194615350914170</id><published>2007-02-12T00:03:00.000-08:00</published><updated>2007-02-03T17:39:52.502-08:00</updated><title type='text'>Testing Private Methods</title><content type='html'>There are a lot of discussion going on in test infected community on how to go about testing private methods.  One of the suggested approach is to &lt;span style="font-style: italic;"&gt;nest a static test class within the production class&lt;/span&gt;. This package level access static class can be called from our testing class, which in turn would call the private methods.&lt;br /&gt;&lt;br /&gt;I strongly disagree with this method. Couple of reasons:&lt;br /&gt;&lt;br /&gt;1. We would be adding extra code in the production code.&lt;br /&gt;2. It might add more cost to the customer&lt;br /&gt;&lt;br /&gt;First we have to understand that, the reason why we want to test the application is to ensure that our application works well and conforms to certain requirements given by the customer. We need to weigh the cost of maintaining these tests also. Customer pays money for the product, and the testing is the extra burden we are putting on the customer to ensure we deliver something right. &lt;br /&gt;&lt;br /&gt;When we deliver the nested class with the production code, we are in fact sending something that was not requested by the customer. This class in turn might introduce its own defect.&lt;br /&gt;&lt;br /&gt;Let us take a simple analogy, process of car manufacturing.  Consider that the testing team inserts a device into the car during car manufacturing. This device would ensure that they can test "engine temperature" accurately.  This device would  go with the car  to the customer also.  Problem here is, we may not know the impact of this device on mileage of the car !!. Even though it has made the lives of developers easy,  we are charging the customer for this device too.&lt;br /&gt;&lt;br /&gt;I strongly feel that, if we want to test something, we should do so without touching the production code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-1162194615350914170?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/1162194615350914170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=1162194615350914170' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/1162194615350914170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/1162194615350914170'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/02/testing-private-methods.html' title='Testing Private Methods'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-7667138360335198544</id><published>2007-02-03T17:38:00.000-08:00</published><updated>2007-02-03T17:39:52.604-08:00</updated><title type='text'>Document style Vs RPC</title><content type='html'>&lt;a href="http://searchwebservices.techtarget.com/ateQuestionNResponse/0,289625,sid26_cid494324_tax289201,00.html"&gt;Here&lt;/a&gt; is a good introduction bringing out the difference between RPC Vs document style web services&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-7667138360335198544?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/7667138360335198544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=7667138360335198544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/7667138360335198544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/7667138360335198544'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/02/document-style-vs-rpc.html' title='Document style Vs RPC'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-1632491522964538595</id><published>2007-01-09T18:52:00.000-08:00</published><updated>2007-01-09T18:53:47.048-08:00</updated><title type='text'>Distributed SOA</title><content type='html'>Nice article on distributed SOA&lt;br /&gt;&lt;br /&gt;It's hard to turn anywhere today without seeing something about&lt;br /&gt;service-oriented architecture, or SOA, and a debate about the "right"&lt;br /&gt;way to do it. That's not surprising, I guess, since every new&lt;br /&gt;computing trend generates debate and every vendor tries to promote&lt;br /&gt;their technology as the right technology – the right product – that&lt;br /&gt;will allow customers to take the most advantage of a new approach.&lt;br /&gt;It's a scramble as vendors try to aggressively reposition their&lt;br /&gt;existing product suites to take advantage of customer interest in a&lt;br /&gt;hot IT trend. It's unfortunate, though, because this behavior often&lt;br /&gt;creates a lot of confusion and potential disillusionment, as promises&lt;br /&gt;made often do not turn into promises kept and technology solutions&lt;br /&gt;sold as appropriate for SOA may turn out not to be.&lt;br /&gt;&lt;br /&gt;To set the right perspective on this, it's important to note that SOA&lt;br /&gt;is, by definition, distributed. The purpose of a service is to&lt;br /&gt;communicate remotely with another service, typically to share data.&lt;br /&gt;The purpose of an SOA is to change the approach of IT from building&lt;br /&gt;bespoke, monolithic applications to building applications that are&lt;br /&gt;developed and integrated more and more using assets from a collection&lt;br /&gt;of shared, reusable functionality, i.e. services.&lt;br /&gt;&lt;br /&gt;A distributed SOA infrastructure represents the easiest way to deploy&lt;br /&gt;and consume shared, reusable services, facilitating incremental&lt;br /&gt;adoption (both economically and technically) and enable greater&lt;br /&gt;deployment flexibility, adaptability and maintainability (e.g., single&lt;br /&gt;services can be certified for update more easily than an entire&lt;br /&gt;application) .&lt;br /&gt;&lt;br /&gt;Unfortunately, centralized approaches to SOA infrastructure continue&lt;br /&gt;to be developed and proposed. Vendors will go to great lengths to&lt;br /&gt;convince the technology buying public that what they're offering is&lt;br /&gt;already SOA compliant, always was, always will be and was truly&lt;br /&gt;designed from the beginning to facilitate their customers' move to&lt;br /&gt;SOA, no matter whether it was originally designed to be a JEE&lt;br /&gt;application server or EAI system.&lt;br /&gt;&lt;br /&gt;In other words, vendors taking an opposing view to distributed SOA&lt;br /&gt;infrastructure often do so because that's the nature of the software&lt;br /&gt;infrastructure they already have. A refried EAI hub or JEE-based stack&lt;br /&gt;or any other solution that requires request messages to be passed&lt;br /&gt;through a central control point, cannot be considered truly&lt;br /&gt;distributed since all access to services must be routed through a&lt;br /&gt;central hub or a server. This centralized approach to SOA adds cost,&lt;br /&gt;limits reuse, reduces flexibility and introduces a potentially&lt;br /&gt;expensive bottleneck. In the worst case it could even negate the&lt;br /&gt;reasons for moving to SOA in the first place. People are bound to be&lt;br /&gt;disappointed if the flexibility of their SOA infrastructure does not&lt;br /&gt;meet their requirements.&lt;br /&gt;&lt;br /&gt;One only has to look to the World Wide Web to see an example of a&lt;br /&gt;distributed application that very successfully meets its users'&lt;br /&gt;requirements. The Web is the largest distributed application ever&lt;br /&gt;built and it's distributed by nature, like an SOA should be. When you&lt;br /&gt;use a browser to click on a link to a URL, your request is not routed&lt;br /&gt;through some kind of central controlling authority deployed in a&lt;br /&gt;server or a hub. Your request goes directly from your browser to the&lt;br /&gt;Web server hosting the page you have requested. This approach works&lt;br /&gt;fine for the Web and it also works fine for an enterprise's SOA. Web&lt;br /&gt;endpoints can be updated individually without breaking clients,&lt;br /&gt;affecting other sites or requiring any update to a central hub or&lt;br /&gt;server, since requests do not have to pass through one in the first&lt;br /&gt;place. A good SOA infrastructure also supports these capabilities.&lt;br /&gt;&lt;br /&gt;Fortunately, an infrastructure solution exists that embraces the&lt;br /&gt;distributed nature of SOA. The distributed approach to SOA&lt;br /&gt;infrastructure uses smart endpoints that service enable applications&lt;br /&gt;and allow them to find and directly communicate with other services.&lt;br /&gt;Enterprise qualities of service, such as high availability or advanced&lt;br /&gt;security, can also be included in the endpoints to preserve the&lt;br /&gt;capabilities upon which existing mission critical applications rely.&lt;br /&gt;Distributed SOA infrastructure is about creating an IT environment&lt;br /&gt;that is platform neutral, standards-based and highly flexible, so that&lt;br /&gt;it can respond better to an ever-changing technology and business&lt;br /&gt;landscape. A distributed SOA environment is therefore better able to&lt;br /&gt;support the technical and economic requirements of an SOA based&lt;br /&gt;application. Finally, a distributed approach to SOA infrastructure&lt;br /&gt;allows you to move at your own pace, deploying services one or two at&lt;br /&gt;a time, adding features such as orchestration, registry/repository ,&lt;br /&gt;management and so on as needed and not before.&lt;br /&gt;&lt;br /&gt;I'm not saying that EAI systems, hub and spoke based applications or&lt;br /&gt;JEE server centric approaches to SOA infrastructure are all bad or&lt;br /&gt;wrong. Many times existing corporate application functionality depends&lt;br /&gt;upon one or more of these implementation styles. All I'm saying is&lt;br /&gt;that a good SOA infrastructure shouldn't constrain your design options&lt;br /&gt;to what any one of these things can do – in fact a good SOA&lt;br /&gt;infrastructure embraces and includes them among the collection of&lt;br /&gt;reusable service assets.&lt;br /&gt;&lt;br /&gt;A parallel between the benefits of distributed SOA and the airline&lt;br /&gt;industry can be seen in the way in which the low-cost operators are&lt;br /&gt;challenging the established carriers. The approach of the established&lt;br /&gt;operators is based on an expensive hub and spoke model that funnels&lt;br /&gt;passengers through a small number of dedicated travel hubs. Large&lt;br /&gt;planes that cost more to operate, fly from spoke airport to hub&lt;br /&gt;airport, where passengers are processed for further travel to their&lt;br /&gt;final destinations. In this model the planes cost more to operate and&lt;br /&gt;airport facility charges are higher. With the rise of low-cost&lt;br /&gt;airlines, which operate on a more distributed, point-to-point model&lt;br /&gt;(smaller planes directly flying to smaller airports), the airlines&lt;br /&gt;that are tied to the traditional hub model are taking a significant&lt;br /&gt;financial hit.&lt;br /&gt;&lt;br /&gt;SOA customers do not need more of the same old bloated and expensive&lt;br /&gt;software stacks. Customers need better software specifically designed&lt;br /&gt;for the requirements represented by the SOA trend – to improve the way&lt;br /&gt;in which existing (and new) IT functional assets are provide to&lt;br /&gt;applications. SOA designs need a good way to create and deploy&lt;br /&gt;reusable services that can be called upon simply and directly when and&lt;br /&gt;where needed. Customers need low cost options that allow them to start&lt;br /&gt;small with incremental adoption, using point-to-point communication&lt;br /&gt;solutions that avoid expensive new servers and hubs, adding quality of&lt;br /&gt;service and other features as required. In short, they need SOA&lt;br /&gt;infrastructure that really meets the inherently distributed nature of&lt;br /&gt;an SOA.&lt;br /&gt;&lt;br /&gt;You can read the above article &lt;a href="%3Chttp://searchwebser%20vices.techtarget%20.com/tip/%200,289483,%20sid26_gci1237827%20,00.html?%20track=NL-%20130&amp;ad=576461&amp;amp;%20asrc=EM_USC_%20889216&amp;uid=%205532089%3E"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-1632491522964538595?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/1632491522964538595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=1632491522964538595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/1632491522964538595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/1632491522964538595'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2007/01/distributed-soa.html' title='Distributed SOA'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-8629012182241686971</id><published>2006-12-11T00:51:00.000-08:00</published><updated>2006-12-11T00:52:24.758-08:00</updated><title type='text'>Socio-Political and Commercial aspect of  WS/SOA</title><content type='html'>Nice article and a good retrospective.&lt;br /&gt;&lt;br /&gt;http://atownley.org/2006/12/socio-political-and-commercial-motivations-for-ws/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-8629012182241686971?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/8629012182241686971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=8629012182241686971' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/8629012182241686971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/8629012182241686971'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/12/socio-political-and-commercial-aspect.html' title='Socio-Political and Commercial aspect of  WS/SOA'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-7245954239479381636</id><published>2006-12-02T08:30:00.000-08:00</published><updated>2006-12-02T08:35:42.443-08:00</updated><title type='text'>Things to know about SOAP before using it - Very funny though</title><content type='html'>&lt;a href="http://wanderingbarque.com/nonintersecting/2006/11/15/the-s-stands-for-simple"&gt;Here&lt;/a&gt; is the most admired post, put together nicely about what SOAP is all about !! Don't hate me if you are a SOAP proponent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-7245954239479381636?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/7245954239479381636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=7245954239479381636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/7245954239479381636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/7245954239479381636'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/12/things-to-know-about-soap-before-using.html' title='Things to know about SOAP before using it - Very funny though'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-4234011893481398619</id><published>2006-11-23T10:47:00.000-08:00</published><updated>2006-11-23T10:48:45.816-08:00</updated><title type='text'>RMI, CORBA and DCOM</title><content type='html'>Gregg Wonderly brings out a clear distinction among RMI, CORBA and DCOM usage in one of the tech discussion forums:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I really find it interesting that people continue to bash RMI as something to&lt;br /&gt;put in the same space as CORBA and DCOM.  Clearly people have used RMI in much&lt;br /&gt;different/worse systems than I.  Based on some of the arguments we've had here,&lt;br /&gt;it seems that the biggest problems people have had with RMI are based on&lt;br /&gt;misunderstandings of the technology and hence misuse of the features.  A lot of&lt;br /&gt;people seem to have just made every object extends UnicastRemoteObject, or used&lt;br /&gt;that class to export everything, instead of looking closer and granularity.  The&lt;br /&gt;other falling off point is serialVersionUID and versioning overall.&lt;br /&gt;&lt;br /&gt;One of the key things about the RMI programming model is that version #1, had&lt;br /&gt;many limitations.  Version #2 is present in the Jini platform, created by the&lt;br /&gt;engineers who were part of the CORBA system design and development as well as&lt;br /&gt;RMI. So, they know all of the issues that people waved in their faces over the&lt;br /&gt;years.&lt;br /&gt;&lt;br /&gt;The predominate arguments against RMI are always based on "granularity".  With&lt;br /&gt;RMI programming, you can design systems that pass big objects, no objects, small&lt;br /&gt;objects, lots of text, or whatever you want.  What Jini gives you in an RMI&lt;br /&gt;programming model, is the ability to (with published specs and standards), plug&lt;br /&gt;in any endpoint or invocation technology that you need.  Thus, you can take&lt;br /&gt;advantage of all the features of the Jini platform while still providing outward&lt;br /&gt;interfaces using other technologies such as the web or WS-*.&lt;br /&gt;&lt;br /&gt;CORBA is a invocation layer technology.  DCOM is an operating system specific&lt;br /&gt;invocation layer technology.  RMI might be considered an invocation layer&lt;br /&gt;technology.  But, it is actually a programming model which includes something&lt;br /&gt;much larger and that's mobile code. Jini expands the RMI programming model with&lt;br /&gt;more features and provides services that use the underlying technologies to&lt;br /&gt;really expand the possibilities.&lt;br /&gt;&lt;br /&gt;Lumping RMI in with CORBA and DCOM, I think, really hides the power of what is&lt;br /&gt;available in that programming model.  In particular versioning is greatly easier&lt;br /&gt;to deal with when you can exploit mobile code to allow clients to continue to&lt;br /&gt;see an old version of the interface while the implementation is actually much&lt;br /&gt;different.  Providing this level of flexibility is what makes it possible to&lt;br /&gt;grow a service with more features and still maintain backward compatibility.&lt;br /&gt;&lt;br /&gt;Google-Maps is a great example of the use of mobile code for version control.  I&lt;br /&gt;have old google-maps which use old versions of their interface.  I haven't had&lt;br /&gt;to convert those to the new system because I download mobile javascript code&lt;br /&gt;that manages that issue for me.&lt;br /&gt;&lt;br /&gt;At some point, they might retire that support and I'll have to switch.  But, the&lt;br /&gt;point is that there's not an instantaneous moment where I have to be compatible&lt;br /&gt;just so that they can move on to create a better system.  They can do it&lt;br /&gt;continuously.&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-4234011893481398619?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/4234011893481398619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=4234011893481398619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/4234011893481398619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/4234011893481398619'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/11/rmi-corba-and-dcom.html' title='RMI, CORBA and DCOM'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-116320888519744276</id><published>2006-11-10T17:32:00.000-08:00</published><updated>2006-11-13T16:00:05.738-08:00</updated><title type='text'>Duties of chief Software Architect</title><content type='html'>My recent post on duites of Chief software architect is availble &lt;a href="http://www.sei.cmu.edu/architecture/arch_duties.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-116320888519744276?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/116320888519744276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=116320888519744276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/116320888519744276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/116320888519744276'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/11/duties-of-chief-software-architect.html' title='Duties of chief Software Architect'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-116016796358206394</id><published>2006-10-06T13:51:00.000-07:00</published><updated>2006-11-13T16:00:05.654-08:00</updated><title type='text'>Developer Or Architect ?</title><content type='html'>I stumbled across this nice &lt;a href="http://www.javaworld.com/javaworld/jw-05-2005/jw-0509-architect.html"&gt;article &lt;/a&gt;trying to define developer and architect !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-116016796358206394?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/116016796358206394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=116016796358206394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/116016796358206394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/116016796358206394'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/10/developer-or-architect.html' title='Developer Or Architect ?'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-116007011674984982</id><published>2006-10-05T10:36:00.000-07:00</published><updated>2006-11-13T16:00:05.593-08:00</updated><title type='text'>Microsoft launches Architect Certification Program</title><content type='html'>Being a Sun Certified Enterprise Architect, I am aware of very few certifications available in the market. I went through the criteria needed to get &lt;a href="http://www.microsoft.com/learning/mcp/architect/default.mspx"&gt;Microsoft Certified Architect(MCA)&lt;/a&gt; program and looks interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-116007011674984982?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/116007011674984982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=116007011674984982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/116007011674984982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/116007011674984982'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/10/microsoft-launches-architect.html' title='Microsoft launches Architect Certification Program'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-115252816004159670</id><published>2006-07-10T03:34:00.000-07:00</published><updated>2006-11-13T16:00:05.531-08:00</updated><title type='text'>Web Development  Directory structure</title><content type='html'>We have started the new web development and I was discussing about the directory structures with the leads. Initially we had created the directory structure based on technology.   I would like to call that as "Technology based directory structure". Recently while we were reviewing one of the open source product, we found that there directory structure is based on "Requirements/Features". Combining the above two we came out with  Requirements--&gt;Technology directory structure.&lt;br /&gt;&lt;br /&gt;Examples:&lt;br /&gt;Technology based directory structure:&lt;br /&gt;Service&lt;br /&gt;   |___ api&lt;br /&gt;   |___ impl&lt;br /&gt;   |___ dao&lt;br /&gt;&lt;br /&gt;Feature driven Directory structure:&lt;br /&gt;Service&lt;br /&gt;   |___ usermanagement&lt;br /&gt;   |            |_  api&lt;br /&gt;   |            |_ impl&lt;br /&gt;   |            |_ dao&lt;br /&gt;   |___ groupmanagement&lt;br /&gt;                |_  api&lt;br /&gt;                |_ impl&lt;br /&gt;                |_ dao&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-115252816004159670?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/115252816004159670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=115252816004159670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/115252816004159670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/115252816004159670'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/07/web-development-directory-structure.html' title='Web Development  Directory structure'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-115175982814508760</id><published>2006-07-01T06:01:00.000-07:00</published><updated>2006-11-13T16:00:05.463-08:00</updated><title type='text'>Java Heap and Windows Operating System</title><content type='html'>Today we were trying to deploy confluence integrated with Valtech cockpit on production. The result was an eye opener. Thanks to the confluence which consumes enough memory to push the heapsize to the limit.  &lt;br /&gt;&lt;br /&gt;As we were doing a test integration, we encountered our first "Out of memory" error within the first 15 minutes. I went back and tweaked the cache parameters within confluence by reducing some of the params like "time to live in memory" and also "number of objects to be in memory".  I felts it worked great for next 24 minutes. Even though the "System information" section showed the "heap size" being used only 83%. Suddenly it crashed by throwing "Out of memory" exception. &lt;br /&gt;&lt;br /&gt;This tweaking continued until we were able to make it work for next 45 minutes and, we felt this does not make sense to fight without proper information in place about the caches.  Anyways, the point is during this struggle to make it work I found this article about &lt;a href="http://forum.java.sun.com/thread.jspa?forumID=37&amp;threadID=201718"&gt;setting memory  size &lt;/a&gt; and its relation with the operating system.  I know now, for serious application deployment we should think of linux/solaris or 64 bit systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-115175982814508760?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/115175982814508760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=115175982814508760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/115175982814508760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/115175982814508760'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/07/java-heap-and-windows-operating-system.html' title='Java Heap and Windows Operating System'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-115079505486297587</id><published>2006-06-20T02:17:00.000-07:00</published><updated>2006-11-13T16:00:05.337-08:00</updated><title type='text'>Impact of rewriting the code from scratch</title><content type='html'>&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; I was going through &lt;a href="http://www.joelonsoftware.com/"&gt;Joel's&lt;/a&gt;&lt;br /&gt;website, and came across the cardinal law&amp;nbsp; of programming.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b style=""&gt;It's&lt;br /&gt;harder to read code than to write it&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;In fact this feels so correct. In the morning, I was trying out ways to&lt;br /&gt;build a javascript function for "inline editing" in one of the custom&lt;br /&gt;grid we have build. I found a sample source code on the website, and when I&lt;br /&gt;opened it, the first thing I felt was&amp;nbsp;this looks like a mess, there are no&lt;br /&gt;proper comments, code is scattered !!!&amp;nbsp; I prefer to just understand some&lt;br /&gt;part of the code and rewrite the whole stuff by myself rather than reusing the&lt;br /&gt;same, which holds good for many developers. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As human beings each one of us are unique, and I believe the same applies for&lt;br /&gt;us when we take the roles of programmers. We want to be unique. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Result: 1. A lot of time gets wasted in rewriting the code&lt;br /&gt;&lt;br /&gt;2. Disaster can happen like for Netscape, where it seems they tried rewriting&lt;br /&gt;Netscape 4.0 and it was all over the place, and it took nearly 3 years for them&lt;br /&gt;to put there code together to release Netscape 6.0 (Jumping 5.0), and now they&lt;br /&gt;have lost nearly 80% of the market.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Moral of the story: Never plan to rewrite an entire product from scratch&lt;br /&gt;without clearly analyzing the impact&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br style="" /&gt;&lt;br /&gt;&lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br style="" /&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-115079505486297587?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/115079505486297587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=115079505486297587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/115079505486297587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/115079505486297587'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/06/impact-of-rewriting-code-from-scratch.html' title='Impact of rewriting the code from scratch'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-115026654216050095</id><published>2006-06-13T23:28:00.000-07:00</published><updated>2006-11-13T16:00:05.280-08:00</updated><title type='text'>Testing the class that uses API and not the API itself</title><content type='html'>I read the following post from Uncle bob's Website:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It's not enough to write tests for an API you develop, you have to write unit tests for code that uses your API.&lt;br /&gt;&lt;br /&gt;When you do, you learn first-hand the hurdles that your users will have to overcome when they try to test their code independently.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-115026654216050095?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/115026654216050095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=115026654216050095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/115026654216050095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/115026654216050095'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/06/testing-class-that-uses-api-and-not.html' title='Testing the class that uses API and not the API itself'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114896921715999024</id><published>2006-05-29T23:06:00.000-07:00</published><updated>2006-11-13T16:00:05.214-08:00</updated><title type='text'>Bulletproofing SOA</title><content type='html'>I found this nice article on the web on how to bulletproof SOA:&lt;br /&gt;&lt;br /&gt;http://news.zdnet.com/2100-9593_22-6076996.html?tag=zdnn.alert&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-114896921715999024?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114896921715999024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114896921715999024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114896921715999024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114896921715999024'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/05/bulletproofing-soa.html' title='Bulletproofing SOA'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114854141555200313</id><published>2006-05-25T00:15:00.000-07:00</published><updated>2006-11-13T16:00:05.158-08:00</updated><title type='text'>SOA 2.0 - Moving towards Event driven architecture</title><content type='html'>Here is an article about future of SOA 1 i.e. SOA 2.0&lt;br /&gt;&lt;br /&gt;"SOA 2.0 is the term that we're using to talk about the combination&lt;br /&gt; of service-oriented architecture and event-driven architecture," said&lt;br /&gt; Steve Harris, vice president of Oracle Fusion middleware.&lt;br /&gt;&lt;br /&gt; The term, SOA 2.0, also is being championed by Gartner's Yefim Natis,&lt;br /&gt; a vice president and distinguished analyst at the firm. Contacted by&lt;br /&gt; telephone, Natis stressed event-driven architecture as the main&lt;br /&gt; distinction between SOA 2.0 and the first, client-server driven&lt;br /&gt; iteration of SOA.&lt;br /&gt;&lt;br /&gt; "SOA as we know it today deals with a client-server relationship&lt;br /&gt; between software modules," with services being subroutines serving&lt;br /&gt; clients, Natis said. "However, not all business processes and &lt;br /&gt;software&lt;br /&gt; topologies fit this model."&lt;br /&gt;&lt;br /&gt; With SOA 2.0, an event-driven architecture is deployed in which&lt;br /&gt; software modules are related to business components, and alerts and&lt;br /&gt; event notifications are featured. The initial SOA concept has not &lt;br /&gt;been&lt;br /&gt; event-driven but instead has featured direct calls from one piece of&lt;br /&gt; software to another in a client-server process, Natis said. SOA&lt;br /&gt; implementations have focused on Web services and subordinates to&lt;br /&gt; clients, he said.&lt;br /&gt;&lt;br /&gt; SOA 2.0 applications could include order processing systems, hospital&lt;br /&gt; admissions processes or bank transactions, Natis said.&lt;br /&gt;&lt;br /&gt; Oracle is positioning its Fusion middleware components as a solution&lt;br /&gt; for SOA. Oracle sees the Java Platform, Enterprise Edition 5 (Java EE&lt;br /&gt; 5), SOA 2.0 and Web 2.0 coming together to produce a more productive&lt;br /&gt; application platform, said Thomas Kurian, Oracle senior vice&lt;br /&gt; president. Web 2.0 features more dynamic clients.&lt;br /&gt;&lt;br /&gt; You can read this in full at:&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;http://www.infoworld.com/article/06/05/17/78420_HNsoa20_1.html?source=NLC-SOA2006-05-25&gt; &lt;br /&gt; &lt;br /&gt;&lt;http://www.infoworld.com/article/06/05/17/78420_HNsoa20_1.html?source=NLC-SOA2006-05-25&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-114854141555200313?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114854141555200313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114854141555200313' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114854141555200313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114854141555200313'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/05/soa-20-moving-towards-event-driven.html' title='SOA 2.0 - Moving towards Event driven architecture'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114847882531596162</id><published>2006-05-24T06:41:00.000-07:00</published><updated>2006-11-13T16:00:05.092-08:00</updated><title type='text'>Cruise Control Step by Step procedure</title><content type='html'>Following steps might be useful while installing cruise control:&lt;br /&gt;&lt;br /&gt;Please Note:&lt;br /&gt;1. These steps were created in one of our projects and by a team member. Many of the folders are hard coded. The developer needs to modify the folder names appropriately.&lt;br /&gt;2. There could be other ways to set up and more easily.&lt;br /&gt;&lt;br /&gt;Installation of the Cruise Control &lt;br /&gt;-----------------------------------&lt;br /&gt;Version : Cruise Control 2.3&lt;br /&gt;&lt;br /&gt;INSTALL PROCEDURE&lt;br /&gt;&lt;br /&gt;NOTE: It is VERY, VERY important that you follow this procedure carefully and exactly with NO changes. &lt;br /&gt;CruiseControl can be quite finicky and takes a long time to debug if it doesn't work right! &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pre-requisite: (on the machine where cruise control is running)&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Tortoise CVS should be installed.&lt;br /&gt;Tomcat 5.0 is installed &lt;br /&gt;JSDK1.4.2 version or above&lt;br /&gt;ANT 1.6 or above&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Folder Structure&lt;br /&gt;---------------------------------------------------&lt;br /&gt;-Create a Folder continuousintegration on c:&lt;br /&gt;c:\continuousintegration&lt;br /&gt; -cruisecontrol  &lt;br /&gt;  -builds&lt;br /&gt;   -artifacts&lt;br /&gt;   -checkout&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Installation Steps:&lt;br /&gt;-------------------&lt;br /&gt;&lt;br /&gt;1) Create the Folder structure as shown in above.&lt;br /&gt;&lt;br /&gt;2) Install the Tortise clint on the machine where the cruise control is running. &lt;br /&gt; (required to update the files from repository)&lt;br /&gt;&lt;br /&gt;3) Install the Java SDK 1.4.2_06 in "c:\j2sdk1.4.2_06" and set JAVA_HOME to the same.&lt;br /&gt; or set the JAVA_HOME where you have the JSDK installed.&lt;br /&gt;&lt;br /&gt;4) Install Tomcat 5.0 in "c:\Tomcat5.0" (no spaces!) and set CATALINA_HOME to "c:\Tomcat5.0". Use port 80 during the installation and note down the administrator username and password tht you supply(username:admin password: admin).&lt;br /&gt;&lt;br /&gt;5) set ANT_HOME variable in the System's environment to "C:\continuousintegration\apache-ant-1.6.2" &lt;br /&gt; or set the ANT_HOME where you have the ant folder.&lt;br /&gt;&lt;br /&gt;6) download the cruisecontrol-2.3.0.1.zip version from the below link and extract this folder in the path &lt;br /&gt; C:\continuousintegration\cruisecontrol downloadlink :http://cruisecontrol.sourceforge.net/download.html&lt;br /&gt;&lt;br /&gt;   - And set CCDIR variable in the System's environment to      &lt;br /&gt;     "C:\continuousintegration\cruisecontrol\cruisecontrol-2.3.0.1\main"&lt;br /&gt;     (This is path of the cruise control which you extracted)&lt;br /&gt;&lt;br /&gt;  - copy the config.xml file attached with this document into path&lt;br /&gt;    "C:\continuousintegration\cruisecontrol\cruisecontrol-2.3.0.1\main\bin"&lt;br /&gt;&lt;br /&gt;7)  Prepend "%JAVA_HOME%\bin;%ANT_HOME%\bin" to the PATH variable in the system environment&lt;br /&gt;&lt;br /&gt;8) Restart the machine. This is necessary for the PATH changes to take effect for creating a Service&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9) Start Tomcat. Go to "http://localhost/manager/html" and login in using the administrator login and password.&lt;br /&gt;&lt;br /&gt;10) Before deploying the cruisecontrol.war on tomcat, build the cruisecontrol.war through command prompt.&lt;br /&gt;    follow steps&lt;br /&gt; -go to command pomopt "C:\Downloads\cruisecontrol-2.3.0.1\reporting\jsp"&lt;br /&gt; -execute command  C:\Downloads\cruisecontrol-2.3.0.1\reporting\jsp&gt;build war; &lt;br /&gt; -build will start now  and will ask for the fallowing inputs so plese input associated values&lt;br /&gt; as given below. &lt;br /&gt;  -set.log.dir: &lt;br /&gt;  "C:\continuousintegration\cruisecontrol\cruisecontrol-2.3.0.1\main\bin\log"&lt;br /&gt;  -set.status.file: &lt;br /&gt;   "currentbuildstatus.txt"&lt;br /&gt;  -set.artifaacts.dir: &lt;br /&gt;   "C:\continuousintegration\cruisecontrol\builds\artifacts"&lt;br /&gt;&lt;br /&gt; -confirm that your build is successfull. &lt;br /&gt;&lt;br /&gt;11) Using the "WAR file to deploy" section, deploy    &lt;br /&gt; "C:\continuousintegration\cruisecontrol\cruisecontrol-2.3.0.1\main\dist\cruisecontrol.war" into &lt;br /&gt; "C:\Tomcat5.0\wepapps" Tomcat. You should be able to see the cruisecontrol jsp application in a browser at "http://localhost/cruisecontrol". This does NOT mean that cruisecontrol process is running. &lt;br /&gt;&lt;br /&gt;12) Check out your project, and copy/cut the entire "checked out source code" folder and paste it into "C:\continuousintegration\cruisecontrol\builds\checkout". &lt;br /&gt;&lt;br /&gt;13) Go into the "C:\continuousintegration\cruisecontrol\builds\checkout\&lt;project&gt;" folder and run "ant war" to verify that an ant build works in this directory. &lt;br /&gt;&lt;br /&gt;14) Run "InstallCruiseControlService.bat" from directory "C:\continuousintegration\cruisecontrol\cruisecontrol-2.3.0.1\main\bin" in a command shell.&lt;br /&gt;&lt;br /&gt;15) If you go to "Start-&gt;Control Panel-&gt;Administrative Tools-&gt;Services", you should now be able to see a service called "CruiseControl". &lt;br /&gt;&lt;br /&gt;16) Change the service to "Automatic" and start it. This should run the service. Check by typing "http://localhost:8000" into a browser. This should bring up the cruisecontrol's JMX control panel.&lt;br /&gt;&lt;br /&gt;17) Click on the link named "CruiseControl Project:name=&lt;project name&gt;" To view  the attributes set for the cruisecontrol.&lt;br /&gt;&lt;br /&gt;18) Run "cruisecontrol.bat" from directory&lt;br /&gt;    "C:\continuousintegration\cruisecontrol\cruisecontrol-2.3.0.1\main\bin" in a command shell.&lt;br /&gt;    If the console did't throw any exception then Hopefully your cruise control will be working fine&lt;br /&gt;    and  it will continously look for the modification at your repository.&lt;br /&gt;&lt;br /&gt;19) See your console for your cruise controle activities or you can see the log files from &lt;br /&gt;    C:\continuousintegration\cruisecontrol\cruisecontrol-2.3.0.1\main\bin\logs&lt;br /&gt;&lt;br /&gt;Some of the Usefull Reference Sites:&lt;br /&gt;http://cruisecontrol.sourceforge.net/&lt;br /&gt;http://cruisecontrol.sourceforge.net/main/configxml.html&lt;br /&gt;http://www.javaranch.com/journal/200409/DrivingOnCruiseControl_Part1.html&lt;br /&gt;http://www.javaranch.com/journal/200410/DrivingOnCruiseControl_Part2.html&lt;br /&gt;&lt;br /&gt;Configuration files&lt;br /&gt;---------------------&lt;br /&gt;1. config.xml ==&gt; Generally available in: C:\continuousintegration\cruisecontrol\cruisecontrol-2.3.0.1\main\bin&lt;br /&gt;&lt;br /&gt;2. CruiseBuild.xml ==&gt; available in your source code folder. Should contain the CVSRoot info.&lt;br /&gt;&lt;br /&gt;3. use "\" appropriately while mentioning folder structure based on your operating system.&lt;br /&gt;&lt;br /&gt;4. Take special care while specifying the environment variables. I got stuck while appending "%ANT_HOME%"\bin to the PATH. Finally, I expanded ANT_HOME to proper windows directory and pasted onto PATH.&lt;br /&gt;&lt;br /&gt;5. Ensure that the log file directory is properly set. Mostly it would be:&lt;br /&gt;"C:\continuousintegration\cruisecontrol\cruisecontrol-2.3.0.1\main\bin\logs\&lt;modulename&gt;&lt;br /&gt;You can also set the log directory at the time of building the Cruisecontrol WAR OR you can change the log dir in web.xml after deplopying Cruisecontrol on tomcat&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-114847882531596162?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114847882531596162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114847882531596162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114847882531596162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114847882531596162'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/05/cruise-control-step-by-step-procedure.html' title='Cruise Control Step by Step procedure'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114795085757567274</id><published>2006-05-18T04:07:00.000-07:00</published><updated>2006-11-13T16:00:05.030-08:00</updated><title type='text'>Amazon being a technology company</title><content type='html'>All these days when somebody talked about Amazon, first thing I used to visualize was some software book image on the web browser !!! But following article changed the way I look at amazon, as a Technology company !!  &lt;br /&gt;&lt;br /&gt;http://www.acmqueue.com/modules.php?name=Content&amp;pa=showpage&amp;pid=388&amp;page=3&lt;br /&gt;&lt;br /&gt;I remember reading it somewhere that McDonald's is not really into making burgers but are into real estate. Now I can see what I read !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-114795085757567274?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114795085757567274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114795085757567274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114795085757567274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114795085757567274'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/05/amazon-being-technology-company.html' title='Amazon being a technology company'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114786756461471927</id><published>2006-05-17T05:02:00.000-07:00</published><updated>2006-11-13T16:00:04.954-08:00</updated><title type='text'>Difference between Transfer and Transport protocol</title><content type='html'>Here is a good definition of transfer and transport protocol found on SOA discussion forum. &lt;br /&gt;&lt;br /&gt;They're two different protocols of the stack that play &lt;br /&gt; entirely different, non-overlapping roles.  Transport is for &lt;br /&gt; moving bits around the network.  Transfer is for exchanging &lt;br /&gt; data between applications. Transfer uses transport.&lt;br /&gt; &lt;br /&gt; In OSI-speak (since somebody brought it up) IIOP, SOAP (as &lt;br /&gt; commonly used), etc.. are layer 5/6 protocols, while transfer &lt;br /&gt; protocols are layer 7.  That's why I've always got a chuckle &lt;br /&gt; about those try to put SOAP over HTTP 8-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-114786756461471927?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114786756461471927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114786756461471927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114786756461471927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114786756461471927'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/05/difference-between-transfer-and.html' title='Difference between Transfer and Transport protocol'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114412284757311030</id><published>2006-04-03T20:13:00.000-07:00</published><updated>2006-11-13T16:00:04.885-08:00</updated><title type='text'>Big Upfront Framework design (BUFD)</title><content type='html'>Recently I have been thinking is it really worth doing Big Upfront Framework Design(BUFD).&lt;br /&gt;I have taken part in designing several frameworks in my past, but never thought(or didnt get a chance) the best phase to design frameworks. It is agreed by default that frameworks are designed upfront before product development begins. Many highly intelligent architects, designers sit together for days and nights without proper sleep and design meta data driven,XML based,database independent frameworks!!!. But if we carefully look into this, upfront framework design is not really agile, and secondly, ROI is also bad. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Doing Upfront Framework Design(UFD), would force the designers and developers to design application or develop application to fit the framework, rather than steering the development effort in satisfying the customer's requirements.&lt;br /&gt;&lt;br /&gt;* UFD, is not profitable to the customer, because frameworks are generally designed to be as generic as possible keeping future requirements in mind, and due to which, customer would be spending money on "future" requirements in the present!!! &lt;br /&gt;&lt;br /&gt;In fact I was trying to think can UFD be applied to Project development scenario, where the project's duration is less than a year ???... Now I feel that it does not suit here too. The reason being, any framework design and development would take atleast 3-4 months, and I feel this effort is not worth spending for a shorter duration project !! &lt;br /&gt;&lt;br /&gt;Ok, the best possible solution could be:&lt;br /&gt;&lt;br /&gt;* Start thinking about framework from the beginning (dont stop yourself), but dont start the design until you pass the inception pase.&lt;br /&gt;&lt;br /&gt;* Start laying the foundation from Elaboration phase. &lt;br /&gt;&lt;br /&gt;* As the product development progress, design, tweak the framework iteratively. &lt;br /&gt;&lt;br /&gt;* The Framework should evolve over a period of time, and at the same time ensure that is "usable" (need not be complete) before construction phase !!&lt;br /&gt;&lt;br /&gt;* keep refactoring, evolving and be agile&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-114412284757311030?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114412284757311030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114412284757311030' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114412284757311030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114412284757311030'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/04/big-upfront-framework-design-bufd.html' title='Big Upfront Framework design (BUFD)'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114403596476263842</id><published>2006-04-02T20:37:00.000-07:00</published><updated>2006-11-13T16:00:04.828-08:00</updated><title type='text'>Cleared SCEA Part 1 Exam</title><content type='html'>March 31st 2006: I cleared the Sun Certified Enterprise Architect exam. I was planning to take up this exam from some time, and in the last 3 days I really put some effort and passed the exam with good scores.&lt;br /&gt;&lt;br /&gt;I have scored 100% in many of the following objectives, especially the ones that I am passionate about like Design patterns, EJB, Applicability of J2EE, Legacy Connectivity(even though I dont like this subject I know a bit), protocols, messaging.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Exam Objectives&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Section 1: Concepts&lt;br /&gt;    * Draw UML Diagrams&lt;br /&gt;    * Interpret UML diagrams.&lt;br /&gt;    * State the effect of encapsulation, inheritance, and use of interfaces on architectural characteristics.&lt;br /&gt;&lt;br /&gt;Section 2: Common Architectures&lt;br /&gt;    * Recognize the effect on each of the following characteristics of two tier,    three tier and multi-tier architectures: scalability maintainability, reliability,  availability, extensibility, performance, manageability, and security.&lt;br /&gt;    * Recognize the effect of each of the following characteristics on J2EE technology: scalability maintainability, reliability, availability, extensibility, performance, manageability, and security.&lt;br /&gt;    * Given an architecture described in terms of network layout, list benefits and potential weaknesses associated with it.&lt;br /&gt;&lt;br /&gt;Section 3: Legacy Connectivity&lt;br /&gt;    * Distinguish appropriate from inappropriate techniques for providing access to a legacy system from Java code given an outline description of that legacy system&lt;br /&gt;&lt;br /&gt;Section 4: Enterprise JavaBeans Technology&lt;br /&gt;    * List the required classes/interfaces that must be provided for an EJB technology.&lt;br /&gt;    * Distinguish stateful and stateless Session beans.&lt;br /&gt;    * Distinguish Session and Entity beans.&lt;br /&gt;    * Recognize appropriate uses for Entity, Stateful Session, and Stateless Session beans.&lt;br /&gt;    * State benefits and costs of Container Managed Persistence.&lt;br /&gt;    * State the transactional behavior in a given scenario for an enterprise bean method with a specified transactional deployment descriptor.&lt;br /&gt;    * Given a requirement specification detailing security and flexibility needs, identify architectures that would fulfill those requirements.&lt;br /&gt;    * Identify costs and benefits of using an intermediate data-access object between an entity bean and the data resource.&lt;br /&gt;&lt;br /&gt;Section 5: Enterprise JavaBeans Container Model&lt;br /&gt;    * State the benefits of bean pooling in an EJB container.&lt;br /&gt;    * State the benefits of Passivation in an EJB container.&lt;br /&gt;    * State the benefit of monitoring of resources in an EJB container.&lt;br /&gt;    * Explain how the EJB container does lifecycle management and has the capability to increase scalability.&lt;br /&gt;&lt;br /&gt;Section 6: Protocols&lt;br /&gt;    * Given a scenario description, distinguish appropriate from inappropriate protocols to implement that scenario.&lt;br /&gt;    * Identify a protocol, given a list of some of its features, where the protocol is one of the following: HTTP, HTTPS, IIOP, JRMP.&lt;br /&gt;    * Select from a list, common firewall features that might interfere with the normal operation of a given protocol.&lt;br /&gt;&lt;br /&gt;Section 7: Applicability of J2EE Technology&lt;br /&gt;    * Select from a list those application aspects that are suited to implementation using J2EE.&lt;br /&gt;    * Select from a list those application aspects that are suited to implementation using EJB.&lt;br /&gt;    * Identify suitable J2EE technologies for the implementation of specified application aspects.&lt;br /&gt;&lt;br /&gt;Section 8: Design Patterns&lt;br /&gt;    * From a list, select the most appropriate design pattern for a given scenario. Patterns will be limited to those documented in Gamma et al. and named using the names given in that book.&lt;br /&gt;    * State the benefits of using design patterns.&lt;br /&gt;    * State the name of a design pattern (for example, Gamma) given the UML diagram and/or a brief description of the pattern's functionality.&lt;br /&gt;    * Select from a list benefits of a specified design pattern (for example, Gamma).&lt;br /&gt;    * Identify the design pattern associated with a specified J2EE feature&lt;br /&gt;&lt;br /&gt;Section 9: Messaging&lt;br /&gt;    * Identify scenarios that are appropriate to implementation using messaging, EJB, or both.&lt;br /&gt;    * List benefits of synchronous and asynchronous messaging.&lt;br /&gt;    * Select scenarios from a list that are appropriate to implementation using synchronous and asynchronous messaging.&lt;br /&gt;&lt;br /&gt;Section 10: Internationalization&lt;br /&gt;    * State three aspects of any application that might need to be varied or customized in different deployment locales.&lt;br /&gt;    * Match the following features of the Java 2 platform with descriptions of their functionality, purpose or typical uses: Properties, Locale, ResourceBundle, Unicode, java.text package, InputStreamReader and OutputStreamWriter.&lt;br /&gt;&lt;br /&gt;Section 11: Security&lt;br /&gt;    * Select from a list security restrictions that Java 2 environments normally   impose on applets running in a browser.&lt;br /&gt;    * Given an architectural system specification, identify appropriate locations for implementation of specified security features, and select suitable technologies for implementation of those features.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-114403596476263842?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114403596476263842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114403596476263842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114403596476263842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114403596476263842'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/04/cleared-scea-part-1-exam.html' title='Cleared SCEA Part 1 Exam'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114304528199540464</id><published>2006-03-22T08:31:00.000-08:00</published><updated>2006-11-13T16:00:04.673-08:00</updated><title type='text'>Who is an Architect ?</title><content type='html'>I found this interesting definition as  per James Mcgovern:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;think of a good architect as someone who really understands the systems they oversee - not just the classes and the collaborations but the real 'soul' of the system. They're the sort of person who, given a particular change in requirements for their system, will come up with three different solutions but will instinctively know which is the right one to go for (and will then find all the technical justification in terms of changability, performance, robustness, etc.) because they know the system so well. They probably love the system a bit too. &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-114304528199540464?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114304528199540464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114304528199540464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114304528199540464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114304528199540464'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/03/who-is-architect.html' title='Who is an Architect ?'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114089105860473597</id><published>2006-02-25T10:10:00.000-08:00</published><updated>2006-11-13T16:00:04.592-08:00</updated><title type='text'>Interesting definition of Enterprise Architecture</title><content type='html'>I found this interesting definition of EA:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;i&gt;Enterprise Architecture is an infrastructure and a set of Machines constructed in order to manage a chaotic, dynamic, unpredictable, complex, organic, prone to error, frustrating, Enterprise IT, which has to support an ever increasing, dynamic portfolio of products and services, through constant "ASAP, Now, Right-Away" modifications of business processes.&lt;/i&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-114089105860473597?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114089105860473597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114089105860473597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114089105860473597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114089105860473597'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/02/interesting-definition-of-enterprise.html' title='Interesting definition of Enterprise Architecture'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114058616168404502</id><published>2006-02-21T21:29:00.000-08:00</published><updated>2006-11-13T16:00:04.538-08:00</updated><title type='text'>What you choose</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;You can make it happen when you truly choose to do so. You always have, and you always will.&lt;br /&gt;If something is important enough to you, you'll surely find a way. Look back on your life up to this point, and you'll see a manifestation of what you've cared most about.&lt;br /&gt;Now take a look at what you care most about in this very moment. Those are the things you will give your energy and attention to, and those are the things that will surely happen for you.&lt;br /&gt;You are plenty capable of pushing yourself relentlessly toward what you choose. For you do it every day and you've had a lifetime of practice.&lt;br /&gt;The big question is this. What exactly do you choose?&lt;br /&gt;Whatever it is, whatever you truly care about in your hjavascript:void(0);&lt;br /&gt;Publish Post eart of hearts, you'll find a way to make it real. With that in mind, always choose the very best you can imagine.&lt;br /&gt;-- Ralph Marston&lt;br /&gt;&lt;br /&gt;Out of your vulnerabilities will come your strength.&lt;br /&gt;-Sigmund Freud&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/21174382-114058616168404502?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114058616168404502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114058616168404502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114058616168404502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114058616168404502'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/02/what-you-choose.html' title='What you choose'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114018893770388049</id><published>2006-02-17T07:08:00.000-08:00</published><updated>2006-11-13T16:00:04.480-08:00</updated><title type='text'>Spring to implement Failover mechansim</title><content type='html'>&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;&amp;lt;bean id="highAvailabilityBean" class="org.springframework.remoting.support.FailoverProxyFactoryBean"&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;  &amp;lt;property name="serviceInterface" value="com.x.MyInterface"&amp;gt;  &amp;lt;property name="serviceBeans"&amp;gt;   &amp;lt;list&amp;gt;   &amp;lt;!-- service beans are typically proxies to remote services  --&amp;gt;    &amp;lt;ref bean="primaryServiceProvider"&amp;gt;    &amp;lt;ref bean="fallBackServiceProvider"&amp;gt;   &amp;lt;/ref&amp;gt;  &amp;lt;/ref&amp;gt;&amp;lt;/list&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;package org.springframework.remoting.support;import java.lang.reflect.InvocationTargetException;import java.util.Iterator;import java.util.List;import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.MethodInvocation;import org.springframework.aop.framework.ProxyFactory;import org.springframework.beans.factory.FactoryBean;import org.springframework.beans.factory.InitializingBean;import org.springframework.remoting.support.RemoteAccessor;/*** Factory bean for proxies to redundant services. Behaves like theproxied* service when used as bean reference, exposing the specified service* interface, but with transparent fail-over. All call to the proxy are* delegated to the first object in the list of service providers (@see* #setServiceProviders(List)). When this delegated call fails, thenext* provider in the list will be called, etc.** @author be324288**/public class FailoverProxyFactoryBean extends RemoteAccessor implementsMethodInterceptor,InitializingBean, FactoryBean {private Object serviceProxy;private List serviceProviders;/*** The list of (redundant) objects that implement the interfacespecified* with {@link RemoteAccessor#setServiceInterface(java.lang.Class)}** @return*/public List getServiceProviders() {return serviceProviders;}/*** @param serviceProviders*/public void setServiceProviders(List serviceProviders) {this.serviceProviders = serviceProviders;}public void afterPropertiesSet() throws Exception {if (getServiceInterface() == null) {throw new IllegalArgumentException("serviceInterface isrequired");}if (serviceProviders == null || serviceProviders.isEmpty()) {throw new IllegalArgumentException("serviceBeans isrequired");}for (Object o : serviceProviders) {if (!getServiceInterface().isInstance(o)) {throw new IllegalArgumentException(o.getClass()+ " does not implement the serviceInterface: "+getServiceInterface());}}this.serviceProxy =ProxyFactory.getProxy(getServiceInterface(), this);}public Object getObject() {return this.serviceProxy;}public Class getObjectType() {return getServiceInterface();}public boolean isSingleton() {return true;}public Object invoke(MethodInvocation mi) throws Throwable {Iterator iter = serviceProviders.iterator();while (iter.hasNext()) {Object bean = iter.next();try {returnbean.getClass().getMethod(mi.getMethod().getName(),(Class[])mi.getMethod().getParameterTypes()).invoke(bean,mi.getArguments());} catch (InvocationTargetException e) {// try next bean or throw exception if this is the lastbeanif (!iter.hasNext()) {throw e.getCause();}}}return null;}}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-114018893770388049?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114018893770388049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114018893770388049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114018893770388049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114018893770388049'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/02/spring-to-implement-failover-mechansim.html' title='Spring to implement Failover mechansim'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-114018849647393415</id><published>2006-02-17T06:59:00.000-08:00</published><updated>2006-11-13T16:00:04.420-08:00</updated><title type='text'>Failover mechansim using Spring</title><content type='html'>Here is a sample code snippet about how spring can be used to handle fail over mechansim: (Ref: from a Spring framework discussion forum)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;&lt;bean id="highAvailabilityBean"&lt;br /&gt;class="org.springframework.remoting.support.FailoverProxyFactoryBean"&gt;&lt;br /&gt;   &lt;property name="serviceInterface" value="com.x.MyInterface" /&gt;&lt;br /&gt;   &lt;property name="serviceBeans"&gt;&lt;br /&gt;    &lt;list&gt;&lt;br /&gt;    &lt;!-- service beans are typically proxies to remote services  --&gt;&lt;br /&gt;     &lt;ref bean="primaryServiceProvider"/&gt;&lt;br /&gt;     &lt;ref bean="fallBackServiceProvider"/&gt;&lt;br /&gt;    &lt;/list&gt;&lt;br /&gt;   &lt;/property&gt;&lt;br /&gt;&lt;/bean&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;package org.springframework.remoting.support;&lt;br /&gt;&lt;br /&gt;import java.lang.reflect.InvocationTargetException;&lt;br /&gt;import java.util.Iterator;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import org.aopalliance.intercept.MethodInterceptor;&lt;br /&gt;import org.aopalliance.intercept.MethodInvocation;&lt;br /&gt;import org.springframework.aop.framework.ProxyFactory;&lt;br /&gt;import org.springframework.beans.factory.FactoryBean;&lt;br /&gt;import org.springframework.beans.factory.InitializingBean;&lt;br /&gt;import org.springframework.remoting.support.RemoteAccessor;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * Factory bean for proxies to redundant services. Behaves like the &lt;br /&gt;proxied&lt;br /&gt; * service when used as bean reference, exposing the specified service&lt;br /&gt; * interface, but with transparent fail-over. All call to the proxy are&lt;br /&gt; * delegated to the first object in the list of service providers (@see&lt;br /&gt; * #setServiceProviders(List)). When this delegated call fails, the &lt;br /&gt;next&lt;br /&gt; * provider in the list will be called, etc.&lt;br /&gt; * &lt;br /&gt; * @author be324288&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;public class FailoverProxyFactoryBean extends RemoteAccessor implements&lt;br /&gt;MethodInterceptor,&lt;br /&gt;        InitializingBean, FactoryBean {&lt;br /&gt;&lt;br /&gt;    private Object serviceProxy;&lt;br /&gt;&lt;br /&gt;    private List serviceProviders;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * The list of (redundant) objects that implement the interface &lt;br /&gt;specified&lt;br /&gt;     * with {@link RemoteAccessor#setServiceInterface(java.lang.Class)}&lt;br /&gt;     * &lt;br /&gt;     * @return&lt;br /&gt;     */&lt;br /&gt;    public List getServiceProviders() {&lt;br /&gt;        return serviceProviders;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * @param serviceProviders&lt;br /&gt;     */&lt;br /&gt;    public void setServiceProviders(List serviceProviders) {&lt;br /&gt;        this.serviceProviders = serviceProviders;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void afterPropertiesSet() throws Exception {&lt;br /&gt;        if (getServiceInterface() == null) {&lt;br /&gt;            throw new IllegalArgumentException("serviceInterface is &lt;br /&gt;required");&lt;br /&gt;        }&lt;br /&gt;        if (serviceProviders == null || serviceProviders.isEmpty()) {&lt;br /&gt;            throw new IllegalArgumentException("serviceBeans is &lt;br /&gt;required");&lt;br /&gt;        }&lt;br /&gt;        for (Object o : serviceProviders) {&lt;br /&gt;            if (!getServiceInterface().isInstance(o)) {&lt;br /&gt;                throw new IllegalArgumentException(o.getClass()&lt;br /&gt;                        + " does not implement the serviceInterface: " &lt;br /&gt;+&lt;br /&gt;getServiceInterface());&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        this.serviceProxy = &lt;br /&gt;ProxyFactory.getProxy(getServiceInterface(), this);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Object getObject() {&lt;br /&gt;        return this.serviceProxy;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Class getObjectType() {&lt;br /&gt;        return getServiceInterface();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public boolean isSingleton() {&lt;br /&gt;        return true;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Object invoke(MethodInvocation mi) throws Throwable {&lt;br /&gt;        Iterator iter = serviceProviders.iterator();&lt;br /&gt;        while (iter.hasNext()) {&lt;br /&gt;            Object bean = iter.next();&lt;br /&gt;            try {&lt;br /&gt;                return &lt;br /&gt;bean.getClass().getMethod(mi.getMethod().getName(),&lt;br /&gt;                        (Class[])&lt;br /&gt;mi.getMethod().getParameterTypes()).invoke(bean,&lt;br /&gt;                        mi.getArguments());&lt;br /&gt;            } catch (InvocationTargetException e) {&lt;br /&gt;                // try next bean or throw exception if this is the last &lt;br /&gt;bean&lt;br /&gt;                if (!iter.hasNext()) {&lt;br /&gt;                    throw e.getCause();&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&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/21174382-114018849647393415?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/114018849647393415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=114018849647393415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114018849647393415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/114018849647393415'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/02/failover-mechansim-using-spring.html' title='Failover mechansim using Spring'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21174382.post-113762795847660308</id><published>2006-01-18T15:45:00.000-08:00</published><updated>2006-11-13T16:00:04.353-08:00</updated><title type='text'>Tao of Software Architect</title><content type='html'>&lt;strong&gt;&lt;span style="font-family:Arial;font-size:130%;"&gt;The Tao of the Software Architect&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style="font-family:Arial;"&gt;I read about this article from one of the architect’s discussion forum&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;em&gt;&lt;span style="font-family:Arial;"&gt;Lao-Tsu, revisited by&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;span style="font-family:Arial;"&gt;Philippe Kruchten&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;span style="font-family:Arial;"&gt;This is a very liberal reading of Lao-Tsu’s &lt;/span&gt;&lt;/em&gt;&lt;span style="font-family:Arial;"&gt;Tao Te Ching &lt;/span&gt;&lt;em&gt;&lt;span style="font-family:Arial;"&gt;for the use of software architects, based on various French and English translations. The number refers to the original tablets. &lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;The architect observes the worldbut trusts his inner vision.He allows things to come and go.His heart is open as the sky. (12)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;The architect doesn't talk, he acts.When this is done,the team says, "Amazing:we did it, all by ourselves!" (17)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;When the architect leads, the teamis hardly aware that he exists.Next best is a leader that is loved.Next, one who is feared.The worst one who is despised. (17)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;A good traveler has no fixed plansand is not intent upon arriving.A good artist lets his intuitionlead him wherever it wants.A good scientist has freed himself of conceptsand keeps his mind open to what is. Thus the architect is available to everybodyand doesn't reject anyone.He is ready to use all situations and does not waste anything.This is called embodying the light. (27)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;If you want to shrink something,you must first allow it to expand.If you want to get rid of something,you must first allow it to flourish.If you want to take something,you must first allow it to be given.This is called the subtle perceptionof the way things are.The soft overcomes the hard.The slow overcomes the fast.Let your workings remain a mystery.Just show people the results. (36)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;When the process is lost, there is good practice.When good practice is lost, there are rules.When rules are lost, there is ritual.Ritual is the beginning of chaos.*(38)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;The architect concerns himselfwith the depth and not the surface,with the fruit and not the flower. (38)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;The architect allows things to happen.He shapes events as they come.He steps out of the waysand let the design speak for itself. (45)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;The architect gives himself upto whatever the moment brings.He knows that he is going to leave,and he has nothing left to hold on to:no illusions, no resistance in his mind.He holds nothing back from the project,therefore is ready for departure†,as a man is ready for sleepafter a good day's work. (50)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;The great way is easy,yet programmers prefer the side paths.Be aware when things are out of balance.Remain centered within the design. (53)The architect's power is like this.He let all things come and goeffortlessly, without desire.He never expect results;thus he is never disappointed.He is never disappointed,thus his spirit never grows old. (55)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;Those who know don't talk.Those who talk don't know. (56)&lt;/span&gt;&lt;br/&gt;&lt;em&gt;&lt;span style="font-family:Arial;"&gt;Alternate:&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;Those who do not have a clue are still debating about the process.Those who know, just do it. (56)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;The architect is contentto serve as an exampleand not to impose his will.He is pointed, but doesn't pierce.Straightforward, but supple.Radiant, but easy on the eyes. (58)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;If you want to be a great leader,stop trying to control.Let go of fixed plans and concepts andthe team will govern itself.The more prohibitions you have,the less disciplined the team will be.The more coercion you exert,the less secure the team will be.The more external help you call,the less self-reliant the team will be. (57)&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;————* Sounds a bit like the SEI CMM! Jim Archer said: "First you pay for results, Then you pay for effort, Finally you pay for attendance."† Especially when he’s only a Rational consultant.&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Arial;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21174382-113762795847660308?l=agilearchitect.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://agilearchitect.blogspot.com/feeds/113762795847660308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21174382&amp;postID=113762795847660308' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/113762795847660308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21174382/posts/default/113762795847660308'/><link rel='alternate' type='text/html' href='http://agilearchitect.blogspot.com/2006/01/tao-of-software-architect.html' title='Tao of Software Architect'/><author><name>Venkatesh Krishnamurthy</name><uri>http://www.blogger.com/profile/11471239057569635943</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://1.bp.blogspot.com/-r-u-KxmQpZs/TwRoKBLiukI/AAAAAAAAAkg/sjX1DbbMZWI/s220/Blog%2BPix%2B1.jpg'/></author><thr:total>1</thr:total></entry></feed>
