<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Satya Komatineni&apos;s Blog</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/" />
<modified>2008-07-03T16:47:19Z</modified>
<tagline></tagline>
<id>tag:weblogs.java.net,2008:/blog/satyak/106</id>
<generator url="http://www.movabletype.org/" version="3.01D">Movable Type</generator>
<copyright>Copyright (c) 2008, satyak</copyright>
<entry>
<title>SOA Projections, Common Data Models, and eventually Surface Oriented Data Architectures</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2008/07/soa_projections.html" />
<modified>2008-07-03T16:47:19Z</modified>
<issued>2008-07-03T16:47:19Z</issued>
<id>tag:weblogs.java.net,2008:/blog/satyak/106.10071</id>
<created>2008-07-03T16:47:19Z</created>
<summary type="text/plain">Where i work there are upwards of 500 applications. In proportionate numbers are databases to support them. Services are the answer. A common API is the answer. Probably true. So I define a handful services. Some are queries and some are updates changing the state. Each service will take objects or structures as inputs and emit an object or collections of objects as output or none. Although each service is independent and stateless, the outputs of these services are corelated and taken together presents a well defined object model. ... Read more in the detail to see how this might lead to surface oriented data architectures. More importantly see how SOA can be bolstered by some technologies in data management.</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>Web Services and XML</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>I admit before writing another line on this subject that I have more questions than answers and majority of my statements here should start with "I wonder ..".
</p>

<strong>SOA Projections: SOA defines a conceptual object model</strong>

<p>Where i work there are upwards of 500 applications. In proportionate numbers are databases to support them. Services are the answer. A common API is the answer. Probably true. So I define a handful services. Some are queries and some are updates changing the state. Each service will take objects or structures as inputs and emit an object or collections of objects as output or none. Although each service is independent and stateless, <em>the outputs of these services are corelated and taken together presents a well defined object model.</em>
</p>

<strong>Query Services: Similarities to SQL</strong>

<p>Moreover a query service has to be cogniscent of the amount of data it needs to return, say for displaying in a "paged" portal page. The same query service may also have to take in a "where clause" to constrain the data. The same query service may have to accomodate "sort" and even at times "aggregation" (such as sum, average etc). In short you need a similar (may be smaller) set of semantics provided by SQL.
</p>

<strong>Common Data Models</strong>

<p>My hunch is that the "collective" output of a set of related services essentially presents a well defined "Common Data Model". So in a round about way the services originating from "n" number of distinct databases presents the picture of a "unified common database" on the other side. Perhaps what do we loose if this "conceptual datamodel" is to be realized in a physical database backed by a number of "data synching" abilities offered by <a href="http://www.satyakomatineni.com/akc/display?url=DisplayNoteIMPURL&reportId=2661&ownerUserId=satya">"Master Data Management"</a> technologies.
</p>

<p>Say we do. Say we go ahead and realize conceptual common data model in a physical database with proper synching procedures. Now something like a web portal can take advantage of this aggregated/conceptual database using "horizontal portlets" (ex: SQL query populated in a web page is a horizontal portlet, for such a portlet can work with any data as long as it is the output of an SQL). This is not uncommon for reporting needs today by reporting engines.  
</p>

<p>I am sure there is a middle road. But the agility of horizontal portlets, well defined data models exposed closer to the end users, query like semantics, need for joins across services are questions to SOA.
</p>


<strong>Surface Oriented Data Architectures</strong>

<p>The tendency in corporations is to hide all the data as far away from the end user as possible. In what I am calling Surface Oriented Data Architectures the data is migrated or presented as close to the end user as securely as possible. For instance searching music libraries or finding buying patterns in Amazon: I see them all as essential characteristics of a "Surface Oriented Data Architecture" where data migrates to the "surface".     
</p>]]>

</content>
</entry>
<entry>
<title>It serves well to remember what inspires</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2008/06/it_serves_well_1.html" />
<modified>2008-06-28T19:36:50Z</modified>
<issued>2008-06-28T19:36:43Z</issued>
<id>tag:weblogs.java.net,2008:/blog/satyak/106.10055</id>
<created>2008-06-28T19:36:43Z</created>
<summary type="text/plain">This is what Ivan Sutherland wrote: &quot;I, for one, am and will always remain a practicing technologist. When denied my minimum daily adult dose of technology, I get grouchy. I believe that technology is fun, especially when computers are involved, a sort of grand game or puzzle with ever so neat parts to fit together. I have turned down several lucrative administrative jobs because they would deny me that fun. If the technology you do isn’t fun for you, you may wish to seek other employment. Without the fun, none of us would go on.&quot;
</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>Community</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>It serves well to remember what inspires. I repeat here a paragraph from Ivan Sutherland followed by links to read the rest.
</p> 

<p>"<em>I, for one, am and will always remain a practicing technologist. When denied my minimum daily adult dose of technology, I get grouchy. I believe that technology is fun, especially when computers are involved, a sort of grand game or puzzle with ever so neat parts to fit together. I have turned down several lucrative administrative jobs because they would deny me that fun. If the technology you do isn’t fun for you, you may wish to seek other employment. Without the fun, none of us would go on." </em>..Ivan Sutherland
</p>

<strong>Credits</strong>
<p>I came to read this paragraph prompted by <a href="http://blogs.sun.com/jag/entry/happy_birthday_ivan">James Gosling's Weblog</a> recommending to read his essay on Technology and Courage. I shall not leave a link to the article here as I am hoping you would go there after reading James Gosling's note on it. :)
</p>]]>

</content>
</entry>
<entry>
<title>A False ceiling: What is behind that blanket of SOA?</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2008/06/a_false_ceiling.html" />
<modified>2008-06-28T19:06:37Z</modified>
<issued>2008-06-28T19:06:29Z</issued>
<id>tag:weblogs.java.net,2008:/blog/satyak/106.10054</id>
<created>2008-06-28T19:06:29Z</created>
<summary type="text/plain">It is not an uncommon argument in IT, where the thought is to hide everything behind a bus of SOA. Couple that with the hype where once upon a time CORBA solved all problems and then EJBs solved all problems. Now SOA is on the lips of many that probably have never written a line of code. It is difficult to argue with someone who is not a goldsmith that what is glittering is not necessarily gold.</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>Web Services and XML</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>I believe in working with my children to clean up their rooms. Time is not always on my side, however. So my 10 year old showed me the other day how nicely she had been cleaning up her room. Everything seemed in order until I have come to find she pushed everything under the bed and covered up with a blanket.
</p>
 
<p>It is not an uncommon argument in an enterprise, where the thought is to hide everything behind a bus of SOA. Couple that with the hype where once upon a time CORBA solved all problems and then EJBs solved all problems. Now SOA is on the lips of many that probably have never written a line of code. It is difficult to argue with someone who is not a goldsmith that what is glittering is not necessarily gold.
</p>

<p>I have a two story house and it looks fabulous looking up with popcorn ceilings until one day the bathroom upstairs started leaking a bit of water. I thought, "Probably replace a pipe here and a coupling there and that should fix it".  Through a tiny hole I climbed up to see. I hope what is behind a SOA wall is rational.
</p>


<strong>Further reading</strong>

<p>1. I have a suspicion that SOA may play only a second fiddle (addressing transport and discovery) to the <a href="http://weblogs.java.net/blog/satyak/archive/2008/05/objects_xml_dat.html">synergistic programming triangle of (Objects, XML, Databases). </a></p>

<p>2. I also feel that SOA is best looked as an <a href="http://www.onjava.com/pub/a/onjava/2006/11/15/reshaping-it-project-delivery-through-extreme-prototyping.html">"intra" system framework</a> first and then only as an "inter-system" framework.
</p>


<p>3. <a href="http://www.satyakomatineni.com">my other web log</a></p>]]>

</content>
</entry>
<entry>
<title>Objects, XML, Databases: A Synergistic triangle of the Programming Circle</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2008/05/objects_xml_dat.html" />
<modified>2008-05-02T15:56:36Z</modified>
<issued>2008-05-02T15:56:28Z</issued>
<id>tag:weblogs.java.net,2008:/blog/satyak/106.9664</id>
<created>2008-05-02T15:56:28Z</created>
<summary type="text/plain">Three technologies, (Objects, XML, Databases) that have evolved independently seem to be flowing toward a synergistic union. An Object is about behavior. An XML is about structure. A Database is about collections. A Program is like a golden braid that weaves through these aspects.

</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>J2EE</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>Three technologies, (Objects, XML, Databases) that have evolved independently seem to be flowing toward a synergistic union. An Object is about behavior. An XML is about structure. A Database is about collections. A Program is like a golden braid that weaves through these aspects.
</p>

<p align="center"><img src="http://www.satyakomatineni.com/akc/filestorage/satya/documentfiles/2582/programming-circle.gif"/>
</p>

<!--*****************************************************-->
<h3>Objects</h3>
<!--*****************************************************-->
<p>Although objects have structure they are seen by their behaviors and defined by the functions they encapsulate hiding their structure. These behaviors are sometimes dependent on their surroundings, environments, or their containers. As a result they are less transportable.
</p>

<!--*****************************************************-->
<h3>XML</h3>
<!--*****************************************************-->
<p>An XML is fundamentally a constrained data structure with rules governing their relationship and binding. Owing to its conceptual structure the syntax of XML is a mere convenience. Whether you define a "c" structure or a "java" class or an "xml" definition they communicate the same data with almost no loss of information. XML is eminently transportable as data tends to be self contained and eventually gets wrapped by object behaviors.
</p>

<!--*****************************************************-->
<h3>Databases</h3>
<!--*****************************************************-->
<p>tables, columns, rows, sql are all apparent aspects of a database management system. What is more subtle to grasp is the role of collections in databases. How to store, search, retrieve, manipulate, and aggregate collections is the bread and butter of databases.
</p>


<!--*****************************************************-->
<h3>Why is it important to see them this way</h3>
<!--*****************************************************-->
<p>Programs live as objects, get transported as XML and become dormant as databases. The more these three aspects are treated in a uniform way the simpler programs are. It is not to say that there are not differences among these three aspects to treat them totally the same. But the role of architecture is to seek and apply what is common.    
</p>


<!--*****************************************************-->
<h3>References</h3>
<!--*****************************************************-->
<p><a href="http://www.satyakomatineni.com">Some relevent and some not, but more of these</a></p>
<p><a href="http://www.satyakomatineni.com/akc/servlet/DisplayServlet?url=NotesIMPURL&ownerUserId=satya&folderName=CS-Java&order_by_format=news">Java related notes</a></p>

<p><a href="http://www.satyakomatineni.com/akc/servlet/DisplayServlet?url=NotesIMPURL&ownerUserId=satya&folderName=CS-dotnet&order_by_format=news">Dotnet related notes</a></p>

<p><a href="http://www.satyakomatineni.com/akc/display?url=NotesiMPURL&ownerUserId=satya&folderName=CSS&order_by_format=news">html/css related</a></p>

 
 ]]>

</content>
</entry>
<entry>
<title>Need you help. What is a good approach for accessing java interfaces remotely and in a transparent fashion?</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2007/01/need_you_help_w.html" />
<modified>2008-06-24T19:17:03Z</modified>
<issued>2007-01-15T18:55:07Z</issued>
<id>tag:weblogs.java.net,2007:/blog/satyak/106.6332</id>
<created>2007-01-15T18:55:07Z</created>
<summary type="text/plain">What is a good approach for accessing java interfaces remotely? The answer seems too obvious. Use EJB session beans, or web services or RMI. is that the best way? Could I not use dynamic proxies and not use any client side or serverside skeletons and stubs? Can I not do this by not generating any thing? Would some one recommend WSIF to do this? What else is out there?</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p><strong>What is a good approach for accessing java interfaces remotely? The answer seems too obvious. Use EJB session beans, or web services or RMI. is that the best way? Could I not use dynamic proxies and not use any client side or serverside skeletons and stubs? Can I not do this by not generating any thing? Would some one recommend WSIF to do this? What else is out there?</strong>
</p>

<p>Phrased differently, if I have a jar file that contains an interface and the domain objects that support that interface, can I access one of its implementations that is sitting on a remote machine using a dynamic proxy. The protocol can be SOAP or EJB or just a plain homegrown over http for that matter.
</p>

<p>Stated differently, if I were to implement a service layer using plain java interfaces and implementations, can I break that layer apart at deployment time with out involving any compile time changes. Such an option will give me the ability to multi-tier an application with very little fan fare. Programmers need even not know about SOAP or EJB etc.
</p>

<p>For instance WSIF (web services invocation framework) seem to advertise a functionality that is similar in intent. But someone expereienced with WSIT comment on whether all you need is interfaces and domain objects? Also WSDL seem to be necessary for WSIF to work. Can it work with out any xml artifacts and assume a certain SOAP implementation and provide a dynamic proxy for it.
</p>

<p><strong>I am hoping someone out there looked into this before and I would like to hear from them. Either you can post the answer here or if you don't have an account, could you email me your opinion? My email is "satya at activeintellect.com".
</strong></p>

<p>Thanks in advance for considering this.
</p>]]>

</content>
</entry>
<entry>
<title>Reflections on the importance of HTML prototyping for IT</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2006/08/reflections_on.html" />
<modified>2008-06-24T19:17:03Z</modified>
<issued>2006-08-12T02:59:12Z</issued>
<id>tag:weblogs.java.net,2006:/blog/satyak/106.5335</id>
<created>2006-08-12T02:59:12Z</created>
<summary type="text/plain">HTML prototypes can play a much more significant role in IT. They can aid faster development times. They can secure budgets. They can encourage good architecture. They can directly lead to a number of development artifacts such as data models, and business services. I think prototypes offer another important aspect to the modern development process along with the Extreme Programming and RUP. 
</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>Community: Java Enterprise</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>Wonder if you have come across these lines before:
</p>

<pre>
"I fix myself an Omelete, sir,
Of fluffy clouds, and sky
...
I sew myself a warm cloak, sir,
of hope and daffodils."
</pre>

<p>Unlike this fanciful dilemma of "Poor Angus" of <a href="">Shel Silverstein</a>, in large IT corporations HTML prototypes can play a much more significant role. They can aid faster development times. They can secure budgets. They can encourage good architecture. They can directly lead to a number of development artifacts such as data models, and business services. I think prototypes offer another important aspect to the modern development process along with the Extreme Programming and RUP.
</p>

<!--*****************************************************-->
<h3>HTML applications are conducive to prototyping ..</h3>
<!--*****************************************************-->
<p>There is a lot of web based IT work these days. It involves creating web sites that contain web forms, paged tables, and pretty boxes. Because of the inherent architecture of html applications, these applications are more conducive to prototyping. It is not difficult to imagine a fairly complete working prototype using just html, css, and some javascript. The nice thing about these prototypes are their lower requirements on skills and their higher reliance on imagination, experimentation, and feedback. Although it should be easier to find people that can do html, css, and javascript, it should be taken in to account that it takes a different personality to create timely and good prototypes. There is no short cut to creativity whether prototyping with HTML or programming in Java.
</p>

<!--*****************************************************-->
<h3>It is very easy to overlook HTML expertise in a web project</h3>
<!--*****************************************************-->

<p>"I am a java or dotnet programmer and hence HTML is not that important...I need to get a certification in java or I need to get a certification in asp.net to get hired into the frenzy of the web ..." These are not uncommon plans among programmers. This is somewhat skewed, yet is well pursued by programmers and corporations that hire them.
</p>

<p>Programmer thinks that he knows the Java programming language inside out. He knows all the OO Patterns. She knows the rose diagrams. He/she knows the EJBs. HTML is quite simple. 
</p>

<p>An interviewer thinks that if one can master the more complex programming languages, how hard can web design be!! Everyone seem to be doing web design these days, aren't they? 
</p>

<p>My dream hire these days for good IT projects will be someone that creates web sites with a passion. From start to finish. They will know html. They will know css. They will know javascript. They will know their subtleties. They will know their nuances. If I give them the requirements they can imagine the site and be able to give me a prototype in a couple of days or with in a week. They know how to put together stuff. They know how to give borders. They know how to design background or master pages. They know how to style forms. Hopefully they have had a few programming courses and a year or two experience with a programming language. 
</p>

<p>In traditional programming we expect things to take a few months. I would like to see a sense of urgency and intensity in this programmer. He/she is eager to finish and demo what is at hand. He/she thrives on and seeks feedback from users. 
</p>

<!--*****************************************************-->
<h3>Designing Prototypes is an IMPORTANT job (and hence a skill) ...</h3>
<!--*****************************************************-->
<p>I consider this ability to design sites a very important job both for entry level programmers and also for experienced programmers wanting to be senior developers or architects. This is the face of what they are designing. 
</p>

<p>I see substantial career growth for programmers that can do this. I see these programmers as cutting through to the core of the development problem. 
</p>

<p>I expect these programmers to do extremely well in the framework and language of their choice. 
</p>

<!--*****************************************************-->
<h3>Don't start your project with out one of these on your staff...</h3>
<!--*****************************************************-->
<p>One of these programmers profiled above is essential before starting your project. This programmer will make or brake the the project. 
</p>

<p>If you don't have one, get one. 
</p>

<p>If you don't have enough budget to get one, train one with some foresight. 
</p>

<!--*****************************************************-->
<h3>If you want a great career in IT, become one...</h3>
<!--*****************************************************-->

<p>If you are a programmer, try your best to acquire the skills of a web designer. Create your own independent web presence. Use blogs or use any online software to hone your skills. 
</p>

<p>If someone comes up and says, "I have a 20 page form based web site", see if you can model it in a week or two. See if you can upload it to a site for a demo. 
</p>

<!--*****************************************************-->
<h3>Again, Web applications are conducive to prototyping ...</h3>
<!--*****************************************************-->
<p>Because of the nature of HTMl and how the presentation layer is separated and well defined from the business layer the IT applications are quite conducive to prototyping. 
</p>

<p>This is quite a luxury for the previous generation of client server applications. 
</p>

<p>With primitive tools such as text editors it is possible to simulate a valid and accurate user experience with in a couple of weeks even for a seriously large size IT application. 
</p>

<!--*****************************************************-->
<h3>Would you like to be an Entrepreneur...</h3>
<!--*****************************************************-->
<p>Well no one else needs this skill more than you. It is all about selling fluffy dreams. There is no other substitute than a prototype for this...A fairly complex html demo can be put together in 2 to 3 weeks. What other great tool is there to take it before your customer... 
</p>

<p>More over this prototype ensures a quick delivery of your finished product as you have to communicate that much less when you hire the programmers. This benefit extends to corporate development as well.
</p>

<!--*****************************************************-->
<h3>Would you like to be an architect of IT...</h3>
<!--*****************************************************-->
<p>This skill is essential in selling your vision for future IT projects and hence establish your TANGIBLE vision this way. As an architect it is also important to realize the role of these prototypes in determining data models for your web site. Depending on the framework of your choice some of these prototypes can be directly used in the development cycle. In that sense a prototype is not just a prototype, but an integral part of the entire development process.
</p>

]]>

</content>
</entry>
<entry>
<title>Vagaries, vicissitudes, and occasional pleasures of submiting a form</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2006/06/vagaries_viciss.html" />
<modified>2008-06-24T19:17:03Z</modified>
<issued>2006-06-19T16:12:49Z</issued>
<id>tag:weblogs.java.net,2006:/blog/satyak/106.5052</id>
<created>2006-06-19T16:12:49Z</created>
<summary type="text/plain">Do you know that a web form can be submitted with an &quot;enter&quot; with out a submit button? Do you know that a web form is speced out to be different when it has only one text field and when it has more than one text field? Although you may have done it a lot, do you recall all the time that &quot;textarea&quot; is not an &quot;input&quot; type like the &quot;text&quot; field. Do you know that you can use a javascript function as a form submit for profit? I have found these and a few others when I looked back on form design. Rest of thsi log entry talks about essentials and less exploited features of web forms for every day usage. </summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>Programming</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>I thought I knew web forms. Atleast I thought I have a working knowledge of how forms work. I didn't realize the number of surprizes I found on the way.

</p><p>My quest started with an innocent inspiration. I like words and their origins. I wanted to put a look up for dictionary.com on <a href="http://www.activeintellect.com/satya">my web log.</a> The form was simple enough with a single text field that takes a word or a phrase and then look up its meaning from an online dictionary. 

</p><p>While playing with the idea, I have realized that <strong class="attention">when a form has a single text field, "enter" button is acting like a submit with no need for an additional button on the form.</strong> I thought that was quite nice. I have added an additional link for unsuspecting users to explicitly look up the meaning if they were not yet clued into the enter. I liked the outcome as the form blended so unobtrusively into the <a href="http://www.activeintellect.com/satya">homepage</a> that it does not even look like a form.

</p><p>Looking back, I liked this form because

<ol><li>I could enter a word and look up the meaning by simply hitting enter. No need to shift the focus.
</li><li>For new users the link worked like a button, and yet takes lesser space and looks more like a web page and not a diaglogue
</li></ol>

</p><p>More over actions resulting from both controls are rerouted through the same javascript function that looked up the meaning using a url. I was thrilled. "Wow, this is nice" I told myself.

</p><p>Time passed. Another day and one more form. But this time the form has a few more fields and a couple of buttons. With stoic confidence I was certain I could work the same magic again. However hard I have tried I could not see why the form is not getting submitted on "enter". So I have started cutting the form down half at a time. When I have reached the single text field it started working. I kind of guessed at this point that at least one of the buttons have to be a submit button and that resolved the issue. But now I wasn't sure if it was a fluke with ie that the single field worked at all with out a submit button.

</p><p>I decided to google (investigate) the mater. What followed was a string of surprises.

<p class="attention">I came to know that indeed the single text field case is part of the spec. I came to know that it is possible to use images as input controls in forms. I also have realized some common patterns that one can use by intelligently navigating the onclick, onsubmit and action javascript functions. It is also possible to make input controls read only or disable them. It is possible to change the target of a form to paint the result in the same page or a new page etc. This article explores some of these topics in more detail in addition to providing a further reading in the references section.

</p><p>Nevertheless it continues to be a challenge to style text fields, buttons, and forms in general. Encoding of form data and submitting a form programmatically are large topics by themselves. I have included these items at the end for further exploration. 
</p>

<p><a href="http://www.knowledgefolders.com/akc/servlet/DisplayServlet?url=DisplayNoteMPURL&reportId=1791&ownerUserId=satya">Rest of the article</a></p>]]>

</content>
</entry>
<entry>
<title>Rewriting SendRedirect to deal with SSL (or https) offloading</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2006/04/rewriting_sendr.html" />
<modified>2008-06-24T19:17:03Z</modified>
<issued>2006-04-07T21:23:26Z</issued>
<id>tag:weblogs.java.net,2006:/blog/satyak/106.4471</id>
<created>2006-04-07T21:23:26Z</created>
<summary type="text/plain">When &quot;sendRedirect&quot; is used, some times the relative url is being translated into an absolute url using wrong scheme (http vs https). This articles explores the problem and a possible solution using servlet filters.
</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>Community: Java Enterprise</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>When "sendRedirect" is used, some times the relative url is being translated into an absolute url using wrong scheme (http vs https). This articles explores the problem and a possible solution using servlet filters.
</p>

<p><a href="http://www.knowledgefolders.com/akc/servlet/DisplayServlet?url=DisplayNoteMPURL&reportId=1711&ownerUserId=satya">
Rewriting SendRedirect to deal with SSL (or https) offloading
</a></p>]]>

</content>
</entry>
<entry>
<title>How to hide and unhide html sections/controls such as &quot;div&quot;</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2005/10/how_to_hide_and.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2005-10-22T15:40:58Z</issued>
<id>tag:weblogs.java.net,2005:/blog/satyak/106.3476</id>
<created>2005-10-22T15:40:58Z</created>
<summary type="text/plain">Lot of times I go back and relearn a bunch of stuff especially in the html/javascript world. Here is one such excursion into using the html div sections for your visual advantage.</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>Lot of times I go back and relearn a bunch of stuff especially in the html/javascript world. Here is one such excursion into using the html div sections for your visual advantage.

<p>The following weblog/article
<p><a href="http://www.activeintellect.com/akc/go.html?url=DisplayNoteMPURL&reportId=1384&ownerUserId=satya">
How to hide and unhide html sections/controls such as "div"
</a></p>

<p>has the following sections

<ul><li>setting up a div
</li><li>showing the div
</li><li>hiding the div
</li><li>visibility tag
</li><li>display tag
</li><li>sample code
</li><li>swapping between small and large images
</li></ul>
]]>

</content>
</entry>
<entry>
<title>18 years of toil, a lot of help from the compiler, and a small but rare personal distinction</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2005/10/18_years_of_toi_1.html" />
<modified>2005-10-22T15:25:53Z</modified>
<issued>2005-10-22T15:25:44Z</issued>
<id>tag:weblogs.java.net,2005:/blog/satyak/106.3475</id>
<created>2005-10-22T15:25:44Z</created>
<summary type="text/plain">How in 18 years the code I wrote ran the first time.</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>Community</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>Software consulting firms in India during late 80s enjoyed a rare advantage. The job market for graduating engineers in all disciplines was very depressed. Especially with regional language differences and the inability to communicate in English and in some case Hindi pushed many undergrads from the regional universities to pursue masters programs. As luck would have it, the central government instituted a scholarship (essentially a monthly salary) for most of the qualifying graduating programs. This further encouraged the migration to higher education. The poor job market and a very qualified talent pool provided a windfall for the consulting firms that had just started consulting in US and other countries abroad.

<p>During those years I found myself sharing a cube with two more individuals at one of the consulting firms. One of these good friends is a copious programmer. He used to get quite irritated as the boss would demand his work sooner. His reason was that he might take longer but his code would run the first time. He was quite right in a good number cases. In contrast I might take ten runs before even compiling and then another ten runs to actually get it working. I have always looked upon a day when I would write code and it would somehow miraculously run the first time.

<p>Well after all these years I have a small victory to report. Recently <a href="http://www.shareonweb.com/index2.htm">Pramod</a>, a friend, asked me to provide a facility for him in <a href="http://www.activeintellect.com/aspire/docpages">Aspire/J2EE</a> to set a parameter on every database connection he uses. So I have created this fairly involved <a href="http://www.activeintellect.com/akc/go.html?url=DisplayNoteMPURL&reportId=1637&ownerUserId=aspire">facility based on "connection events"</a> that did the following


<ul><li>Raise event when a connection is created
</li><li>Raise event when a connection is closed
</li><li>Raise event when a connection is requested from a pool
</li><li>Raise event when a connection is put back into a pool
</li><li>Provide an event distributor so that he can override any events
</li><li>Provide a default event handler that can call an sql statement on all opened connections
</li></ul>

<p>I have also created a write up for him on my site on how to use the facility along with release notes for the jar file. I was gearing up to hear from <a href="http://www.shareonweb.com/index2.htm">Mahaveer</a>, who is using this jar, all kinds of issues as I have not even unit tested the facility other than compiling it with eclipse.

<p>Then I was talking to <a href="http://www.shareonweb.com/index2.htm">Pramod</a> on a completely different subject and he mentioned the whole thing worked fine as he expected and <a href="http://www.shareonweb.com/index2.htm">Mahaveer</a> is using it.

<p><a href="http://www.activeintellect.com/satya">I am</a> quite positive I may have to wait another few years for this to happen.]]>

</content>
</entry>
<entry>
<title>Jaxb 2.0 tutorial</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2005/08/jaxb_20_tutoria.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2005-08-02T21:09:55Z</issued>
<id>tag:weblogs.java.net,2005:/blog/satyak/106.3037</id>
<created>2005-08-02T21:09:55Z</created>
<summary type="text/plain">If you are looking for a quick way to get upto speed with jaxb 2.x, I have put together a jaxb 2.0 tutorial based on my short presentation at OSCON 2005. Click on the link above to see online references to the material.</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>J2EE</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>Unlike jaxb 1.x architecture jaxb 2.x uses metadata and can be quite seamless in working with java and xml. Hopefully the following references are quite useful to you to get to know jaxb 2.x and start working with it.

<p><a href="http://www.activeintellect.com/akc/go.html?url=DisplayNoteMPURL&reportId=1449&ownerUserId=satya">
1. Jaxb 2.0 tutorial at Aspire Knowledge Central
</a></p>

<p><a href="http://www.activeintellect.com/akc/go.html?url=DisplayNoteMPURL&reportId=1419&ownerUserId=satya">
2. Details of the presentation at OSCON 2005
</a></p>
]]>

</content>
</entry>
<entry>
<title>It is idle to compare Damian Conway with anybody</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2005/08/it_is_idle_to_c.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2005-08-02T06:59:47Z</issued>
<id>tag:weblogs.java.net,2005:/blog/satyak/106.3033</id>
<created>2005-08-02T06:59:47Z</created>
<summary type="text/plain">Speaking of the undisputed master of short stories O.Henry, Henry James Formand said this &quot;It is idle to compare O.Heny with anybody. The combination of technical excellence with whimsical sparkling wit, abundant humor, and fertile invention is so rare that the reader is content without comparisons.&quot;</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>Community</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>Speaking of the undisputed master of short stories O.Henry, Henry James Forman said this "It is idle to compare O.Heny with anybody. The combination of technical excellence with whimsical sparkling wit, abundant humor, and fertile invention is so rare that the reader is content without comparisons."

<p>Except for the different medium those words ring true for the inimitable talent of Damian Conway as a speaker. This was clearly in display during last year OSCON. I am eager to see his presentations and speeches this year. This is one thing that you don't want to miss at OSCON.]]>

</content>
</entry>
<entry>
<title>CVSNT, Eclipse, and some lessons in OpenSource</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2005/02/cvsnt_eclipse_a.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2005-02-05T17:45:26Z</issued>
<id>tag:weblogs.java.net,2005:/blog/satyak/106.2005</id>
<created>2005-02-05T17:45:26Z</created>
<summary type="text/plain">I had the most difficult time getting eclipse 3.0.1 to work with the current CVSNT build CVSNT 2.0.58d. The knot has been finally unravelled and what I found, more importantly how I found out, seem to be a glimpse of how OpenSource and by extension any evoliving (and hence good quality) software matures.</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>Community: Java Tools</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>I had the most difficult time getting eclipse 3.0.1 to work with the current CVSNT build CVSNT 2.0.58d. The knot has been finally unravelled and what I found, more importantly how I found out, seem to be a glimpse of how OpenSource and by extension any evoliving (and hence good quality) software matures. 

<p>The findings can answer the following comments fears regarding OpenSource software

<ol><li>There is not much help available on your product
</li><li>Unlike a product from a large company I can not get support when I need it
</li><li>Quality is not there
</li></ol>

<!--*****************************************************-->
<h3>How did I get into CVS</h3>
<!--*****************************************************-->
<p>A few months ago I have worked on a project where the team was using eclipse and CVS. It worked beautifully. The whole synchronization and merging process is awsome. So last week I was establishing a brand new project and wanted to use the same tools. So I downloaded eclipse 3.0.1 and the latest CVSNT which is at build 2.0.58d.

<!--*****************************************************-->
<h3>The Problem</h3>
<!--*****************************************************-->

<p>Ran into two problems. Eclipse complains about repository path prefixes. I temporarily resolved it by specifying the drive letter and the full path. Although awkward that worked. Then I can't see anything in the HEAD or the Version or the Branches.

<!--*****************************************************-->
<h3>The search</h3>
<!--*****************************************************-->

<p>A search on Google yielded the difficulty of CVS and Eclipse integration issues. Apparently only a portion of the CVS interface is standardized. For example if you ask CVS for a list of modules in a repository, the syntax for "asking" is standard but not the syntax for the "answer". So the tools like Eclipse will have to mine this metadata from the messages that comes back from the cvs server.

<p>Now you can see how difficult and flaky the integration can be between the tools. And it is. I have spend two days tracking this issue. <a href="http://www.activeintellect.com/akc/go.html?url=DisplayNoteMPURL&reportId=1130&ownerUserId=satya">You can read about this journey here as part of my notes on CVS</a>. You can also find answers here on how you can make Eclipse 3.0.1 work with CVSNT 2.0.58d build. You can also find out what to do if a future release breaks.

<!--*****************************************************-->
<h3>The resolution</h3>
<!--*****************************************************-->
<p>Finally I ran into a thread of discussion that took place in the eclipse bug reporting system. This communication took place between the main developers of the eclipse plugin and CVSNT. It is a treasure trove of information and is essentiall for this collaboration to work.

<p>The end result of that discussion was that a new tab called compatibility was introduced in cvsnt and a new build posted with in a week. With this new tab you can make CVSNT compatible to the eclipse version. You can also read about this solution at the link above I have suggested along with links to the other discussions I have mentioned.

<!--*****************************************************-->
<h3>Communication is the key to effectively work with an OpenSource product</h3>
<!--*****************************************************-->
<p>The key to a great software product is how well the developer is connected to the user. We need to remove the barriers between developers and users to communicate with each other. If something is not working for a user who else is in a better position to answer than the developer.

<p>Having this access to the developer instills a greater confidence in the product. Recently I had to work with a multimillion dollar product. After three rounds of global round table meetings I still couldn't get past the sales people to get my questions answered. You can not search on Google for the product manuals because they are behind locked doors in formats only their tools can read. Compare that to an OpenSource product where on a webpage, without even logging in, you can post a question and a developer gets to see that question.

<p>As a user of an OpenSource product, one should cultivate these channels of communication to get the best out of that product. As a developer you should cultivate these channels of communication to ensure you are accessible and the users questions are answered as soon as possible.

<p>The best advice I can give to a user of an OpenSource product is get hold of the developers emails or the webpages that they monitor and make your questions visible to them. Send them a direct email or post them to their web logs. Track them down. 

<!--*****************************************************-->
<h3>One way communication channels and the OpenSource</h3>
<!--*****************************************************-->
<p>A user gets to know about a product through the following sources

<ol><li>Architecture manuals
</li><li>User guides
</li><li>Refernce guides
</li><li>Release notes
</li></ol>

<p>These are the hardest to establish for an OpenSource product due to the lack of resources and also due to the frequency of builds and enhancements. For example in case of CVSNT there is a PDF guide and a MicrosoftWord users guide. But you can't find any of this information as those documents are hard to produce and usually lag in functionality by months if not years. In a quick moving project manuals can hardly keep up with the reality. 

<!--*****************************************************-->
<h3>Modern channels of communication</h3>
<!--*****************************************************-->

<ol><li>Wiki like websites
</li><li>Mailing lists
</li><li>Web based Bug reporting
</li><li>Direct email
</li></ol>

<p>A website backed by a content management system or a WIKI is probably the best option for OpenSource developers to disseminate information quickly and interactively where appropriate. For example I manage the documentation for my OpenSource product <a href="http://www.activeintellect.com/akc/go.html?url=NotesMPURL&ownerUserId=aspire&folderName=Howto">Aspire/J2EE</a> using a similar scheme.

<p>Mailing lists are quite effective for an established product like Tomcat or Java where they have gained substantial acceptance and relatively stable. The problem with mailing lists for the early stages of an OpenSource product is their need to subscribe and unsubscribe and then monitor the emails.

<p>For CVSNT/Eclipse I found my answers through their bug reporting system got exposed by Google. This can be a very effective tool if the bugs can be organized and visible as topics as opposed to a one line searchable database. And also the ability to open a new bug or a topic with out much fanfare

<p>More than often you can send an email directly to the developers about the issues. You may get back atleast where to post or send your questions to get quick answers.

<!--*****************************************************-->
<h3>IOH: Inverse of Help</h3>
<!--*****************************************************-->
<p>Usually as a user you monitor a products website for help about that product. In my mind there are cases where the inverse of that relationship works quite well, especially for Beta sites. In this idea a user creates a set of web logs or a web site focussed on activities involving the product in question. Then the product developer will monitor this site or weblog and actively answers their questions.

<p>This also works in a teacher/group-of-students relationship as well. Where a class of students maintain an active set of weblogs that the teacher can comment on or help out with.
 
<!--*****************************************************-->
<h3>Ensuring the help is available</h3>
<!--*****************************************************-->
<p>XP talks about a "Programmer's Bill of Rights". The goal there is to ensure that a programmer is productive with few barriers from their team or the environment. A good OpenSource product will ensure the "Bill of Rights" for its users by keeping the developers in constant and available contact with users. 

<p>Both commerical products and the OpenSource products can benefit from this. For Microsoft MSDN does a great job of this by allowing their developers publish content for their development users.

<p>As far as IT is concerned they should look at their product selection using this criteria. If they were to do that a substantial number of products won't make the grade. Microsoft, through its MSDN is a rare exception. Java, through its JDK API documentation is another case in point. IBM had partially done this before with their redbooks. 

<!--*****************************************************-->
<h3>Topic centric help vs Document/Book centric help</h3>
<!--*****************************************************-->
<p>The key to provide this level of help is not to hire professional writers or create word or pdf documents. The key lies in online publishing where the documentation and help can be developed incrementally, a paragraph at a time if needed. The supporting tools should take these nuggets and give the semblance of a unified documentation.

<p>what I have found out is that it is lot hard harder and time consuming to create a table of contents driven book like help. It is lot more easier to develop the same level of detail using one topic at a time. Then eventually cross link the topics incrementally on a wiki like website. In addition a content management system may have automated tools to compose these topics into more organized sections or books. In essence the content management system will treat these documents as XML content while allowing multiple tool enabled strategies for disseminating that content in a variety of ways.

<!--*****************************************************-->
<h3>Ensuring that support is available</h3>
<!--*****************************************************-->
<p>There is no substitute to reaching someone that can answer questions authoritatively. IT should measure how quickly their developers can reach the developers of the product for answering questions, elaborating on architecture etc. An active participation of the real developers is a great sign.

<!--*****************************************************-->
<h3>On the question of quality</h3>
<!--*****************************************************-->
<p>Unlike the wishes and hopes of an IT organization quality does not seem to be corelated to the size of a company. I have seen some great OpenSource projects and I have seen some bad ones too. I have seen pretty bad commercial products (more often than one would like to think possible) and some good ones as well. 

<p>A good quality product is usually surrounded by good communication channels between the developers and the users. There is a constant churning taking place between the two so that the quality raises to the top. Simplicity, consistency, and Openness are also the hall marks of a good product. It is a question of usage and age before these mature. 
]]>

</content>
</entry>
<entry>
<title>Some notes on localizing server side applications</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2004/11/some_notes_on_l_1.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2004-11-26T18:44:51Z</issued>
<id>tag:weblogs.java.net,2004:/blog/satyak/106.1760</id>
<created>2004-11-26T18:44:51Z</created>
<summary type="text/plain">Localization seem to be a never ending topic. Here are some questions on the subject, occasionally followed by answers.
</summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>Community: Java Enterprise</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p>Localization seem to be a never ending topic. Here are some questions on the subject, occasionally followed by answers.

<p><a href="http://www.activeintellect.com/akc/go.html?url=DisplayNoteMPURL&reportId=1159&ownerUserId=satya">
Access the questions here
</a></p>

<p>Important items include managing two locales for your server side applications: one for language and one for formatting (I call this country locale)]]>

</content>
</entry>
<entry>
<title>A hobbit&apos;s ring and walls of Mordor: A journey through IT</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/satyak/archive/2004/08/a_hobbits_ring.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2004-08-11T09:21:09Z</issued>
<id>tag:weblogs.java.net,2004:/blog/satyak/106.1183</id>
<created>2004-08-11T09:21:09Z</created>
<summary type="text/plain">Recently where I work I had a request to create a web page that displays some data from a database. Well I figured I could do that.  This reminded me of Leonardo Da Vinci writing to a prospective employer that he could architect war machines while only on the last line of that long letter that he would mention that he could paint as well if an occasion arises. Any way back to the ring analogy where this web page is my &quot;ring&quot; and the database is my &quot;drop point&quot;. I thought how hard can it be.  </summary>
<author>
<name>satyak</name>

<email>satya@activeintellect.com</email>
</author>
<dc:subject>Business</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/satyak/">
<![CDATA[<p><b>The walls of Mordor</b></p>


<p>My 6 year old daughter was fascinated watching me watch this little guy taking a ring somewhere. As I have watched all the three films it was kind of a deja vu for her. Her question was where is this guy taking this ring to. And she wanted to see where he is going to drop it. She was not really concerned about the emotion in the middle. She just wanted to see the scene where he would drop the ring. I told her taht he had to cross these really thick fortified walls of Mordor to get there not to mention the countless mountains and forests. 


<p><b>My little ring</b></p>


</p><p>Recently where I work I had a request to create a web page that displays some data from a database. Well I figured I could do that.  This reminded me of Leonardo Da Vinci writing to a prospective employer that he could architect war machines while only on the last line of that long letter that he would mention that he could paint as well if an occasion arises. Any way back to the ring analogy where this web page is my "ring" and the database is my "drop point". I thought how hard can it be.  


<p><b>Familiar walls</b></p>


</p><p>So I have talked to the team that already developed a substantial application using Struts and Websphere. The architecture they are adapting is pretty straight forward containing domain objects, and service interfaces with a possible session bean implementations for the near future.


<p><b>Installation walls</b></p>


</p><p>For me to add code to this solution required that I install WSAD, DB2 Client, and QuestCentral for DB2. It somewhat disappointed me that I can't immediately take a look at the database and check its data to plan a strategy for the web page. I said, that's OK, I have patience I get to install all these nice tools and perhaps I will be super productive. 

</p><p>Being a large corporation, the installs are handled by a different department. So I have asked them to install WSAD. It took a week to install WSAD because it conflicted with 10 other applications that are on my box all seemingly requiring a different JVM. I had to uninstall all applications that are evenly remotely connected with Java and then proceed to install WSAD. At 2.1 Giga bytes WSAD certainly needed the respect that it demanded.

</p><p>Well my luck seem to follow me. I have asked the help desk subsequently to install "db2client" and "quest central". Mistake. I should have asked to install them one after the other. Well the result is I have found after reboot that DB2 is a flurry of error messages. But the good news is "Quest central" seem to come up (Whether it will actually connect to a database is another question).

</p><p>So I call back and have DB2client reinstalled.

</p><p>Well Quest central won't work now and complains about not finding "DB2CLI.DLL".

</p><p>On some investigation the "PATH" variable in the environment for "System" is pointing to "Path" as opposed to "PATH". That's an easy guess. So I had to change this to "PATH" and QuestCentral seem to come up OK now.

</p><p>You would think WSAD the flagship of IBM would come with a db2client built in. Well I guess IBM ran out of room as they already take 2.1 Gigabytes on the hard drive. Either that or IBM figured most programmers use SQLServer anyway (Just kidding).


<p><b>Configuration walls</b></p>


</p><p>Even after installing all this, you would think I can click some button somewhere and I would be able to SEE the data. Well now I have to configure the Quest with whatever settings it needed to see the data. And all the manuals tell you to install tools to connect to the data but they are quite silent about where the data is. It is like finding those fires to drop the ring in. It seems the target is ever alluding.


<p><b>Data is secondary</b></p>

</p><p>In fact it is not uncommon for projects of this nature to expect to go through the java architecture first and then walk through the service apis to see how to retrieve the data instead of looking at the rich set of SQL calls to explore the data to eventually come back to the service interfaces. 


<p><b>Walls of Mordor revisited</b></p>


</p><p>It is as if data in IT corporations is guarded and locked behind the walls of Mordor. I always wondered why these walls are so thick. Almost 3 Giga bytes of code to put a simple web page. Don't get me wrong, the architecture IS important and the service layers ARE important in a multi developer environemnts, but I suspect that it is possible to make this process a bit less austere and more experimental to arrive at the final solution.

</p><p>Apparently Quest central knows its databases by reading the db2client.ini file. Well this itself is configured using yet another tool in the db2client installation. Comparing to all this, setting up a JDBC connection seem like a breeze. After this is done quest central seem to recognize the data base and opens the database.


<p><b>Encrypted walls</b></p>

</p><p>You would think I have seen my data now. It is as if realizing that one would get here eventually, the data modellers seem to have another wall around data. This is the obscure abbreviated table and column names. They look more like mangled names. No data dictionary to figure out what these abbreviations might mean and what the significance of these fields. You are expected to know these by spending time with the database and mostly by osmosis. 


<p><b>Programmer's Rights</b></p>

</p><p>The story is not that uncommon. This seem to negate one of the laws of XP that says a programmer has the RIGHT to be productive. These walls are some of the reasons why such a right can be undermined. 


<p><b>Familiarity and innovation</b></p>

</p><p>When data is so remote to the programmer, it is hard for the programmer to be innovative and come up with new ideas for viewing or manipulating the data in new ways. Because programmer is only exposed to the service APIs that may or may not allow experimentation of the data. This unfamiliarity and remoteness with data why some of the IT systems look so stiff. 
</p>


<p><a href="http://www.activeintellect.com/satya">
My other ramblings</a></p>]]>

</content>
</entry>

</feed>