Monday, April 19, 2010
A Developer's Wish
I have decided to attend the GIDS (Great Indian Developer Summit) @ Bangalore for Day 3 and Day 4. I wanted to write about some of the interesting sessions that I am planning to attend.
Session on Relentless Innovation in Java:- The overview of the session talks about the way Java needs to be taken post Oracle acquistition. But with James pulling out of Sun, now how much of these things would really make the same sense as before. Sure that this would be a more of marketing session, but the interesting part of this session would be towards the end, the Q& A part. Our guys are pretty smart and I guess that this session would be interesting to see the questions that the community has. True that the presenter would also be smart, but what I am looking for is not the answers, but the questions.
Session on Java Generics:- This is another interesting session for me. That particular slot has 4 tracks and I would prefer to attend this track. I see the other 3 tracks to be marketing their products and this the odd man out. Other other session is GWT 2.0. Its close to 2yrs since GWT 2.0 was released and till today if Google is not able to market a technology, then I suspect the glitch in that. Of couse I have used GWT to its maximum extent and event designed a tool/framework, but I tool feel that GWT needs to focus more on organizing the content and presenting it rather than just the display part of it.
Session on Maven:- Now most of the corporates already have and are mavenizing their projects. It would be really interested to know more about that. Other session that I am equally interested is Business Driven Identity Management, but I don't think I would be attending that.
Session on Complex Event Processing:- You won't be suprised if I tell that I am working on a system that processes close to 70 million events per day. So why would I not be interested in the topic!
Apart from that you can visit Stall No: 25 where I would spending most of my time to involve in several activits to select the winners of Dell NoteBook that PayPal is planning to give away for the event. Not necessarily for the notebooks, you can also visit the stall to understand how can you leverage PayPal today to monetize your apps (if you have one) to be fetching an additional revenue for you.
See you there...
Wednesday, January 27, 2010
Coruage Conquers
Friday, December 04, 2009
Technology should touch lives
Tuesday, December 01, 2009
TEDxChennai - Talks that made me think...



Wednesday, October 28, 2009
Agile Scrum – A brief overview
Scrum is one of the methodologies used for iterative software development within the available set of agile methodologies. SCRUM is not an acronym and it has been derived from the game rugby. Scrum is a project / product development methodology which fits to the current changing paradigm and also gives more importance to project governance.
Unlike the current development team structure, scrum has only 3 roles to play within a team,
- Scrum Master – one who maintains the process and works to ensure the realization of goals of the Sprint.
- Product Owner – the primary stakeholder of the product. Basically the customer who is responsible for prioritizing the backlog.
- Scrum Team – a self organized group who do the analysis, design, implementation and testing.
- Sprint – a 2 to 4 week cycle where the scrum team works to accomplish a set of tasks. The duration of the sprint can be decided by the team. The output of each sprint must be a working piece of software.
- Product Backlog – is a high level document of the entire set of requirements for the project / product. This is prepared by the Product Owner and would be the input for arriving with the sprint backlog. Each item in product backlog would be prioritized.
- Sprint Backlog – is the detailed document of the items that would be performed for the current sprint to accomplish either a set of or a single item in the product backlog. The selected item(s) from the product backlog are broken down into granular tasks which can be accomplished within 8hrs of effort. These tasks would constitute the sprint backlog. This is done by the team.
- Sprint Burn Down Chart – is a line chart showing the remaining hours available to be burnt for completing the sprint. This chart is owned by the Scrum Master and has to be updated on a daily basis.
The Methodology
The product owner comes up with the story for the scrum. The story meant here is a one liner of the requirement that would be accomplished to meet the specific business need. This requirement is further broken down into detail requirement points called the product backlog.
Now once the product backlog is ready is when the scrum starts. There happens a scrum planning meeting where the product owner meets with the entire scrum team and discusses on the priority of the items in the product backlog. In this meeting it is also decided on the during of the sprint. Once the product backlog is completely created a Sprint Planning Meeting is initialized.
The duration of the Sprint planning meeting is 8 hours. During the first half, the product owner describes the goal of the product and the details of the product backlog to the team. The second half of the meeting, the team selects specific requirements from the product backlog that can be accomplished per sprint based on the priority. The selected requirements are broken down into tasks which are called the sprint backlog. It is to be kept in mind that each sprint is expected a deliver a shippable product / feature.
The Sprint begins and lasts of the agreed duration. There is no change allowed or entertained to be added / modified to the sprint backlog.
1. What did I do since yesterday?
2. What have I planned to do today?
3. Is there any issue that is obstructing my task?
Each sprint team member is expected to answer this question.
· There is nothing called schedule variance or effort variance for a sprint. It is only the Sprint Burndown chart.
Tuesday, October 13, 2009
Be real
The world will often discourage you from giving love. Give love anyway.
Many times, despite your best efforts, you will not be understood. Keep giving it your best anyway.
The treasures in life are not what you get back. Those things are only shadows of life's true value.
The real treasures are what you're able to give of yourself. And as long as you give authentically, from the heart, with the best you have, it doesn't really matter what comes of it.
It's nice to be acknowledged and respected and understood. Yet even when you're not acknowledged or understood, there is still great value in doing what you know is right, what you know is best.
Smile a peaceful smile to the depth of your being. Be real, and know that all is well.
Tuesday, September 29, 2009
PayPal Innovate 09 - The intersection of Ideas & Money

- 1. Get exclusive access through 2009 to PayPal payment technology for developers that is above and beyond Adaptive Payments
- 2. Hear Tim O’Reilly deliver the keynote address
- 3. Preview PayPal’s roadmap for 2010
- 4. See profitable early-adopter applications build on PayPal technology
- 5. Network with hundreds of other developers, VCs and PayPal engineering staff
- 6. Learn how to grow your business with PayPal’s payment solutions. Whether you are new to PayPal or an existing developer, the conference has tracks dedicated to helping you drive the most business with your products
Tuesday, September 08, 2009
My LWD with CSS Corp
Thursday, July 23, 2009
Interesting Amazon S3 tools
Monday, July 20, 2009
Interesting days...
Friday, July 10, 2009
Thoughts On Architecture - What does it mean to be an architect?
Monday, June 29, 2009
Cloud computing - the recent BUZZ
Cloud computing is now gettings exposed as public and private cloud and now the new flavour interests people. That's it. Let me share few extracts of the discussion that I had with a friend in LinkedIn:-
Discussion topic:- CloudComputing, XaaS! What are the disadvantages?
Reply 1:- Cloud computing can be broken down into 3 basic categories.
- SaaS - software as a service (using a hosted product such as SalesForce.com or CRM Online)
- PaaS - creating an application that is then deployed into a hosted environment (Windows Azure, Google App Enging)
- IaaS - a virtualized infrastructure hosted in the cloud (Amazon EC2, GoGrid and to an extent Windows Azure)
Based on the above three categories is what we need to talk about advantages / dis-advantages. But one thing we need to keep in mind is that when we talk about Cloud Based solution it-self, we are talking about a low-cost, PAYG model. Thus know that we are talking about a PAYG model, we will definitely need to understand that there are going to be more challenges that roses. But there are also paid models available with Amazon and Google where they ensure a well defined SLA.
Question again:-We are an ISV, we develop software in the tradional way. We install some desktop apps and a server. What would be the disadvantages if we would implement all three layers of cloud computing? Build our own Iaas, develop our SaaS on our PaaS. The user would access our apps through the browser. Why should we switch to the cloud(proprietary or from a vendor)? Why not? What speaks against it?
Reply 2:-
Question 1. When you say you would install some desktop apps and a server, then you are now under the IaaS category. Personally, I am not able to say that by working in IaaS you implement PaaS and SaaS, because they are three different categories. But essentially the provider would also have built a PaaS on top of IaaS and similarly SaaS on top of a PaaS, but there the provider has the entire control and knowledge of the underlying hardware. But in our case, though we get into IaaS, we do have limitations. Though you are said that you would be allocated a processor with X Ghz speed with XGB HDD and XGB RAM, it is only in a Virtualized environment. We would not be able to do any virtualization on top of the HW that we get to host VIA cloud. (This is equal to the Shared Hosting concept) Data security is something that you need to take into account since on a cloud based environment, you need to make sure that you don't share any of your data with others. This can be achieved only by encrypting your data when you load it to the cloud and your app only knows to de-crypt it. But this is going to kill your application response time. Also be aware of the SLA that the provider gives. If there is NO SLA, and your's is a critical business app, better to not chose cloud. Hence for the first question, there is no big disadvantage, but there are certainly a lot of limitations when trying to implement all the three layers by getting initially into a IaaS.
Question 2: For cost and scalability. Cloud is currently in the PAYG model. Let's assume that you have a site hosted in your own physical box at your site. Now you want to publish voting results of your place and you expect more people to use your site for that period of time. What would you do conventionally? Add HW. Right? But with cloud, we can host the result publish site alone as a seperate with a very high HW and BW to support the user volume of the one or two days and channelize it via our own site. Now after two days you can bring the site down. With Amazon EC2 kind of environment (Linux) it would cost you less that $5 for two days! Another example would be for a test bed. If you wish you test your SW to see it's performance you can very well do it from the Cloud by running multiple EC2 instances at the same time and kill all once your testing is done. To conclude on Q2, switching from vendor to cloud is a very high level decision that you need to make. The entire Cloud Computing space is not yet very mature except of one or two vendors in IaaS and SaaS space. So if your's is a mission critical application, it is better to be with the known devil as of now.:)
Question 3: Having spoken a lot in Q1 and Q2, I think it answers Q3 by itself.
Friday, February 27, 2009
Make your world sparkle
Tuesday, November 11, 2008
SOA - My paradigm...
- Service - Oriented Architecture
- Service - Orientation
- Service Oriented Solution Logic
- Services
- Service Composition
- Service Inventory
- An architecture that relies on “service-orientation” as its fundamental design principle.
- Allows for easier management of business processes through the use of flexible IT connections within a well defined, standards-based interface.
- An architectural style that emphasizes implementation of components as modular services that can be discovered and used by clients.
- SOA is a design for linking business and computational resources (principally organizations, applications and data) on demand to achieve the desired results for service consumers (which can be end users or other services).
- SOA establishes an architectural mode that aims to enhance the efficiency, agility, and productivity of an enterprise by positioning services as the primary means through which solution logic is represented in support of the realization of the strategic goals associated with Service Oriented Computing.
- As a form of technology architecture, SOA implementation can consist of a combination of technologies, products, APIs, supporting infrastructure extensions and various other parts.
- Service-orientation is a design paradigm comprised of a specific set of design principles.
- Service-orientation describes an architecture that uses loosely coupled services to support the requirements of business process and users.
- Resources in a network in an SOA environment are made available as independent services that can be accessed without knowledge of their underlying platform implementation.
- Is a distinct design paradigm that, when applied, facilitates the creation of service-oriented automation logic in the form of services.
- Provides a distinct means of achieving a separation of concerns.
- Is the core to the design of services regardless of what underlying technology is used to implement them.
- Services exist as physically independent software programs with specific design characteristics that support the attainment of the strategic goals associated with service-oriented computing.
- Each service is assigned its own distinct functional context and is comprised of a set of capabilities related to its context. Those capabilities suitable for invocation by external consumer programs are commonly expressed via a published service contract.
A physical view of Service Oriented Computing
Sunday, November 09, 2008
How does search inside websites work?
How may of you have heard of the word "Lucene"? Lucene, from Apache, is a full featured search engine library completely written in Java. It is an open source project and is available for Free. For those who want to take a overview of Lucene, please visit (http://lucene.apache.org/).
But I am NOT going to talk about Lucene here. Lucene requires you to take the compiled files and have it in your application. I wish to talk about two different search engines that do the work that we need and have a comparison of the same. Keep in mind that my intention is NOT to conclude on any specific implementation.
The two search engine are Apache Solr Project and ht://Dig project.
Apache Solr (http://lucene.apache.org/solr/)
Solr is again an Apache project, built on top of Lucene. Solr is a search server. It need not only feature indexing/search of websites, but anything under the SUN. Let me explain.
Solr is basically a WAR file which can be deployed with any web container. It comes with the examples which have the XML format to upload data and also a shell / dos script to do that. All we need to do, is have our data in that specific XML format and then upload the same to Solr instance. Once that is done, Solr is ready to render the search data for you based on the query string. Slor has it's own set of programming APIs also.
Solr has an excellent Administrator screen through which all the admin operations for the server can be performed.
A typical scenario where I use Solr is:- I have a requirement where I need to have a search engine in my application which is the heart of it. I convert all my data to XMLs and index it with Solr. The same in my RDBMS takes 2 secs and in Solr it is in very few milli secs. Experience it yourself by working with Solr.
ht://Dig (http://www.htdig.org/)
ht://Dig is an website search engine. All you need to do is configure the website URL int the ht dig config file htdigconfig.xml and ht://Dig index's all the page of the site and give you the output results.
ht://Dig is an Unix project and hence best suited for Unix. You need to download the software and follow a set of simple setps to setup ht://Dig. ht://Dig runs as a separate engine and would render search results based on the URL.
ht://Dig can be used at the same time to index multiple website and render search results for multiple queries. Once you have an entry to the config file for a site an indexing is performed and a database is created. Multiple web-site URLs can be configured in the same config file or you can have multiple config files.
The best practice is to have a single config file per site.
Geeks, try both, it just took 3 hours for me to try. But this a good piece of software / solution to be known..
Jai Hind
Thursday, November 06, 2008
The feeling of warmth
Wednesday, November 05, 2008
America elects it's historic president
