Monday, May 24, 2010
Long Pause
I had been silent on the blog for quite a while, the reason being, apparently, too much of activity at work and domestic fronts. Life is back to normal and things are under control now. I'd be writing few entries on the BPEL this time, so watch the space ;)
Saturday, February 06, 2010
Programmer Types
We have heard of types of architects, this blog entry talks about types of programmers based on two attributes - planning and sophistication. Another dimension of looking at things!
Apache Thrift
Apache Thrift - "Thrift is a software framework for scalable cross-language services development. It combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml.". Sounds pretty interesting.
Wednesday, November 25, 2009
Year.introspect(2009)
Yet another year!
This year I made no more than 7 blog entries, the reason for being quite on the blogging front is that significant time was required to be spent on the work and personal fronts and seldom had a chance to blog.
On the work front, had a absoutely eventful year. Moved to a different domain within in the same company and it is very interesting to roll out the projects in a relatively shorter time frames whose business impact is very conspicuous. Had a very delightful time designing the stuff and educating the team. Btw, I got promoted as well :)
On the personal front, nothing great but got used to family life and the daily chores :). Early september, we managed to get a week off and went to Kerala. The vacation was much needed and was very refreshing.
This year I made no more than 7 blog entries, the reason for being quite on the blogging front is that significant time was required to be spent on the work and personal fronts and seldom had a chance to blog.
On the work front, had a absoutely eventful year. Moved to a different domain within in the same company and it is very interesting to roll out the projects in a relatively shorter time frames whose business impact is very conspicuous. Had a very delightful time designing the stuff and educating the team. Btw, I got promoted as well :)
On the personal front, nothing great but got used to family life and the daily chores :). Early september, we managed to get a week off and went to Kerala. The vacation was much needed and was very refreshing.
Sunday, October 11, 2009
Thank You, Sateesh!
Today, our project deployment to PROD went very very smoothly. It is one of the smoothest deployments I had ever seen. Everything worked absolutely fine with no issues. If I look back and introspect the way it was developed and delivered, one key factor that attributed to the success of the project is the "buddy - buddy" relationship with the test team. We have an exceptionally good testing team that worked together with the dev team and helped in identifying the defects early. Thanks to the test lead for his iconic leadership and providing direction to the test team on how to test complex scenarios. Sateesh, you rock!!!
Tuesday, August 25, 2009
Control Characters in XML
For some reason, XML 1.0 does not support low level ASCII control characters, even if they are wrapped inside a CDATA section. In my project, there was a requirement to send barcode data in an XML message that contained ASCII charaters from 4-31 and although we wrapped the content in a CDATA section, it didnt help. The parser didnot understand it and blew up. XML 1.1 seems to have added support for control characters, but the parsers we use are yet to offer the support. We resolved the issue by encoding the content to Base64 and asked the downstream apps to decode it back and use it.
Btw, this is my 100th blog entry :)
Btw, this is my 100th blog entry :)
Friday, May 29, 2009
Wednesday, May 06, 2009
The premain() method
A colleague of mine pointed me to the premain() method in Java. This method is useful, particularly, in cases where there is a need to add a jar while the system is coming up, the jars can be added to bootstrap classloader, cool! One use of this method is to start an agent to monitor the performance of the system and have some program listen on this port to aggregate the perf stats. I just came across a really cool utility that draws the sequence diagrams while the program is running. Interestingly, this tool is also loading the agent using the premain(). If you'd like to give this tool a try download JTracert from the google code!
Friday, January 30, 2009
Web Service Orchestration without BPEL
In my project there is a requirement to call few web services in sequence and aggregate the responses and expose the functionality as a web service. There are quite many services with this required behavior. The initial solution was to use some BPEL engine, but the decision was put on hold due to various reasons and we were encouraged to whip up a light weight framework in java that suits our needs. This was indeed interesting and I was successful in designing and developing a embeddable and light weight orchestration framework in java. Following are some thoughts on the same -
Since, the framework is more or less chaining of web service calls, I decided to keep the flow of messages as XML inside the orchestration framework. Modeled the Orchestration as an XML pipeline. Chaining of web service calls needed transformation of response to that of the request of the next service and XSL has been choosen to transform the message formats. Quickly whipped up an XSLUtil based on Trax (Transformation API for XML). The next challenge was to invoke the webservices using XML data as request. I decided to go the XML way to avoid marshalling/unmarshalling of POJOs from/to XML. JAX-WS came handy here. JAX-WS comes with a nice feature called Dispatch that would allow invocation of web services using either a SOAP message or XML payload, the latter met my need. It didnt take much time to play with the Dispatch interface and to implement a generic utility. I had the core componenets ready in a very short span of time.
The next step was to abstract the execution of these utilities, so defined the classes called *Action for transformation and invocation and made them configurable using a XML file and my little orchestration framework is ready. It also has a feature that reports the invocation trace along with the profiling information. However, this is just the beginning. There was an immediate need to add the branching, looping, assignment actions. Used JEXL for expression evaluation of branching and looping functions. And now, am thinking of adding some kind of a transition governance between the stages (using AspectJ) and add some kind of a compensation handlers to each stage. I'm also playing around with XTS of JBossTM to see if I can provide transaction recovery and make the web services transaction aware.
If you have any suggestions and ideas to improve the framework, write a comment.
Since, the framework is more or less chaining of web service calls, I decided to keep the flow of messages as XML inside the orchestration framework. Modeled the Orchestration as an XML pipeline. Chaining of web service calls needed transformation of response to that of the request of the next service and XSL has been choosen to transform the message formats. Quickly whipped up an XSLUtil based on Trax (Transformation API for XML). The next challenge was to invoke the webservices using XML data as request. I decided to go the XML way to avoid marshalling/unmarshalling of POJOs from/to XML. JAX-WS came handy here. JAX-WS comes with a nice feature called Dispatch that would allow invocation of web services using either a SOAP message or XML payload, the latter met my need. It didnt take much time to play with the Dispatch interface and to implement a generic utility. I had the core componenets ready in a very short span of time.
The next step was to abstract the execution of these utilities, so defined the classes called *Action for transformation and invocation and made them configurable using a XML file and my little orchestration framework is ready. It also has a feature that reports the invocation trace along with the profiling information. However, this is just the beginning. There was an immediate need to add the branching, looping, assignment actions. Used JEXL for expression evaluation of branching and looping functions. And now, am thinking of adding some kind of a transition governance between the stages (using AspectJ) and add some kind of a compensation handlers to each stage. I'm also playing around with XTS of JBossTM to see if I can provide transaction recovery and make the web services transaction aware.
If you have any suggestions and ideas to improve the framework, write a comment.
Thursday, January 22, 2009
Qualities of a Software Architect
Interesting article on the essential qualities of an architect. Read it here -
http://blogs.msdn.com/gabriel_morgan/archive/2009/01/17/enterprise-solution-architects-and-leadership.aspx.I quite agree with Gabriel that leadership is imperative for an architect. Let me know your thoughts.
http://blogs.msdn.com/gabriel_morgan/archive/2009/01/17/enterprise-solution-architects-and-leadership.aspx.I quite agree with Gabriel that leadership is imperative for an architect. Let me know your thoughts.
Tuesday, December 30, 2008
Year.introspect(2008)
Well, another year is just rolling by and am here again introspecting the happenings during the last 12 months. This year had been an quite eventful on both work and personal fronts.
On the personal front - Got married on March 09 and it took a while to get adjusted to the family life, given that I was away from home most of the time for my education and career. Should say that I ramped up quite fast here. My wife Madhuri is very understanding and did her best to make our lives happy. We got the pending tasks done at the new house and finally moved into the new house during November. Personal tasks, unsually, took lot of effort, but managed it quite well.
On the work front - an year filled with lot of learning and fun with technology. Made a formal entry to the world of services, yeah, the SOA stuff. Played and had fun with webservices, ALSB. Worked with some of the best brains and learnt a lot. This year, in addition to the role of an architect, I was also in the role of an Delivery Lead (DL). It was a thrilling experience to learn and disseminate the technical stuff, define the contracts, keep the team motivated and making the day-to-day tasks more enjoyable. Understanding the group dynamics and building the team was really cool. I realized that the best way to motivate the team is to kindle the technical passion and fuel it continuously by challenging the developers. Facilitate the team and encourage them to do it themselves.
Coming to the reading part, I read only three books this year. SOA - concepts, technology and design and SOA - prinicples of service design, both by Thomsa Erl. The first book is well over 600 pages and took a while for completion. These came to me as gifts from Madhuri on my birthday. I highly recommend reading these books. I also read How to win friends and influence people by Dale Carnegie, it was very good read.
Overall, it was very good year. I wish everyone a very happy and prosperous new year.
On the personal front - Got married on March 09 and it took a while to get adjusted to the family life, given that I was away from home most of the time for my education and career. Should say that I ramped up quite fast here. My wife Madhuri is very understanding and did her best to make our lives happy. We got the pending tasks done at the new house and finally moved into the new house during November. Personal tasks, unsually, took lot of effort, but managed it quite well.
On the work front - an year filled with lot of learning and fun with technology. Made a formal entry to the world of services, yeah, the SOA stuff. Played and had fun with webservices, ALSB. Worked with some of the best brains and learnt a lot. This year, in addition to the role of an architect, I was also in the role of an Delivery Lead (DL). It was a thrilling experience to learn and disseminate the technical stuff, define the contracts, keep the team motivated and making the day-to-day tasks more enjoyable. Understanding the group dynamics and building the team was really cool. I realized that the best way to motivate the team is to kindle the technical passion and fuel it continuously by challenging the developers. Facilitate the team and encourage them to do it themselves.
Coming to the reading part, I read only three books this year. SOA - concepts, technology and design and SOA - prinicples of service design, both by Thomsa Erl. The first book is well over 600 pages and took a while for completion. These came to me as gifts from Madhuri on my birthday. I highly recommend reading these books. I also read How to win friends and influence people by Dale Carnegie, it was very good read.
Overall, it was very good year. I wish everyone a very happy and prosperous new year.
Sunday, December 28, 2008
Ref Cards for developers
Here is a nice link that contains downloadable copies of ref cards for various technologies.
Thursday, December 11, 2008
Internet Connection saga
After moving to the new house in Sainikpuri, we enquired for almost 3 weeks calling different ISPs to set up a broadband connection and it was all in vain. The customer service is pathetic and annoying. One ISP collected all the required documentation and a cheque for the installation and first month charges but after a couple of days informed us that the connection cannot be made and that the money would be returned within 15 business days (It has been more than that now, we still did not get the money back!). We almost gave up and decided to settle with the USB enabled connection.
Now, am publishing this post connected to a 400Kbps line from home. Here is the sequence of events that happened during the last 10 days -
Dec 02, 2008: Received a call from Vedica Technologies. Not sure how they got my number, the agent inquired if am interested in a Wimax connection from Reliance. Said Yes and was informed that the sales executive would call and meet me in two business days.
Dec 04, 2008: Sales Executive met me at home around 9 PM and gave the details of the plan, collected the documents. I mentioned sternly that I'd give the cheque only after technical feasibility is done and was told that it was not the process. I was unrelenting on that matter and the director (Mr. Srinivas Reddy) called me up and I mentioned the experience with one of the ISPs. Though, it was not per process, the director agreed to do the technical feasibility as I had a bitter experience earlier.
Dec 06, 2008: Technical Feasibility completed and was assured a strong signal as the tower is within 1KM distance. The tech Agent allowed me to test from my laptop. Gave the cheque and asked for the installation to be done on Dec 09 as it was a holliday for me.
Dec 09, 2008: Got a call around 9 AM from the tech agent that installation cannot be done as the work order is not processed yet. Verification of the details was done by reliance communications via phone and in person by 3 PM.
Dec 11, 2008: Installation started around 8 AM and completed by 10:30. There was minor disruption in setting up the account. By 11:30 the account is activated and am connected to the world! Working from home today.
I'm quite pleased with the service offered by Vedica Technologies and would thank Srinivas Reddy, the director and Hemanth, the tech agent for their committment.
Now, am publishing this post connected to a 400Kbps line from home. Here is the sequence of events that happened during the last 10 days -
Dec 02, 2008: Received a call from Vedica Technologies. Not sure how they got my number, the agent inquired if am interested in a Wimax connection from Reliance. Said Yes and was informed that the sales executive would call and meet me in two business days.
Dec 04, 2008: Sales Executive met me at home around 9 PM and gave the details of the plan, collected the documents. I mentioned sternly that I'd give the cheque only after technical feasibility is done and was told that it was not the process. I was unrelenting on that matter and the director (Mr. Srinivas Reddy) called me up and I mentioned the experience with one of the ISPs. Though, it was not per process, the director agreed to do the technical feasibility as I had a bitter experience earlier.
Dec 06, 2008: Technical Feasibility completed and was assured a strong signal as the tower is within 1KM distance. The tech Agent allowed me to test from my laptop. Gave the cheque and asked for the installation to be done on Dec 09 as it was a holliday for me.
Dec 09, 2008: Got a call around 9 AM from the tech agent that installation cannot be done as the work order is not processed yet. Verification of the details was done by reliance communications via phone and in person by 3 PM.
Dec 11, 2008: Installation started around 8 AM and completed by 10:30. There was minor disruption in setting up the account. By 11:30 the account is activated and am connected to the world! Working from home today.
I'm quite pleased with the service offered by Vedica Technologies and would thank Srinivas Reddy, the director and Hemanth, the tech agent for their committment.
Sunday, November 16, 2008
Moved!!
We finally did it! Moved to the new house on Saturday, Nov 15, 2008. The move was very well planned and it was not too hectic. The distance to the office increased by 4 KM and the route being good will take close to one hour to reach the office
Monday, November 10, 2008
GC and Performance Tuning
Here is the link to performance tuning techniques at the GC level. Ever wondered about the options available at the GC level for performance tuning?
Thursday, October 30, 2008
My experiences with SOA-part II: Principles
It has been quite a while since I published a post on my blog. As usual am held up with tasks both on the work and personal front and added to that the festival season had brought in some travel and leisure.
Well, in this entry am supposed to cover the principles of SOA. So, what essentially are the priniples of SOA? The following are the set of widely accepted principles of SOA:
1. Reusability
2. Loosely Coupled
3. Abstract the logic underneath
4. Composability
5. Autonomous
6. Statelessness
7. Discoverability
8. Possess a contract
Keep in mind that it is all about services. These principles are inter-related to each other. In the next part, I'll cover how we started on this project, the role of ESB and something on the unit testing and CI.
Well, in this entry am supposed to cover the principles of SOA. So, what essentially are the priniples of SOA? The following are the set of widely accepted principles of SOA:
1. Reusability
2. Loosely Coupled
3. Abstract the logic underneath
4. Composability
5. Autonomous
6. Statelessness
7. Discoverability
8. Possess a contract
Keep in mind that it is all about services. These principles are inter-related to each other. In the next part, I'll cover how we started on this project, the role of ESB and something on the unit testing and CI.
Sunday, October 12, 2008
Architect and Army general
An interesting post on how an architect should be - The Architect Said What
Tuesday, October 07, 2008
An interesting article on Scripting languages
Came across this article on CIO.com that considered the various scripting languages - Ruby, Python, Perl, Javascript and PHP and provided info on where each language fits the best. The opinions from experts like Zed Shaw and Martin Aspeli. It is very good read, the article is here
Web Services, Security and SocketException
I use Soap UI for testing my web services and one service exposed to our clients is SPNEGO enabled and whenever I test this service using Soap UI there is an error - java.net.SocketException: Software caused connection abort: recv failed. The reason for this error is mostly due to the client side settings, network issues, windows socket binding, server side shared JVM. In my case it got resolved when the Http Settings were changed a little on the Soap UI HttpSettings. I just enabled the Pre-emptive Authentication and I could successfully consume the web service. This service is consumed by applications written in Java (Axis2) and .NET. We have advised out clients to increase the time for Socket timeout and enable pre-emptive authentication to avoid any potential issues in the future.
Wednesday, October 01, 2008
My experience with SOA - part I: Myths
It had been slightly over an year since I started working on a SOA project and people have been asking me to share my experiences and learnings. I decided to write a series of posts on my blog focusing on one aspect everytime. In this entry, I'll address the myths about SOA.
1. If your project has web services then you are doing SOA: Funny does it sound, isnt it? I have been hearing this statement for a long time. Web services is just an architectural style that facilitates achieving the fundamental principles of SOA.
2. ESB is SOA: another popular myth. SOA is technology neutral and is not coupled to one particular way of doing it. This myth defeats the core principles of SOA - loose coupling and vendor diversity.
3. SOA is out of the box: Well, SOA is not the panacea to all the business problems. There is no out of the box product that guarantees this. There is a popular myth that simply wrapping the legacy systems with web services to achieve SOA.
The above myths are mostly from a technical perspective, I have not touched upon myths from a business angle. There are myths that SOA is easy (umm, I wish it were that easy), SOA is very expensive, SOA is always a flop, etc.
In the next post, I'd cover the core principles of SOA.
1. If your project has web services then you are doing SOA: Funny does it sound, isnt it? I have been hearing this statement for a long time. Web services is just an architectural style that facilitates achieving the fundamental principles of SOA.
2. ESB is SOA: another popular myth. SOA is technology neutral and is not coupled to one particular way of doing it. This myth defeats the core principles of SOA - loose coupling and vendor diversity.
3. SOA is out of the box: Well, SOA is not the panacea to all the business problems. There is no out of the box product that guarantees this. There is a popular myth that simply wrapping the legacy systems with web services to achieve SOA.
The above myths are mostly from a technical perspective, I have not touched upon myths from a business angle. There are myths that SOA is easy (umm, I wish it were that easy), SOA is very expensive, SOA is always a flop, etc.
In the next post, I'd cover the core principles of SOA.
Subscribe to:
Posts (Atom)