Sunday, May 20, 2007
Jaiku.com
Sunday, May 06, 2007
Neat...
Saturday, April 21, 2007
Hard-coding vs Soft-coding and Misc
Stumble up on this. Talks about hard-coding vs soft-ccoding, rules engines, config files and all that. Even I have got into few of the assignments which leads to similar decisions. It does stimulate ones software engineering senses. Are Enterprise Rule Engines (aka Business Rule Engines) really have a fit in every enterprise applications. Or Languages like Java, C++ are the Business rules languages and their compilers are the very engines we are talking about.
Agile software and likes are mantra of the day. Everything needs to be decoupled. SOA (Service Oriented Architectures) is driving it in some form. But whats' the optima? Where's the nirvana? Does too much of agility leads to fragility? Too much of integration points makes it slow or increases the chances of failures? Does all this still needs time to get mature enough and weed out hype and husk? Business is changing in the lightning speed and so should the IT systems. And what makes it happen is IN.
All the above and the ones following are some of my random thoughts. Some think-food. I dont' advocate anything. There are some architectures which fits better than other in particular situation. Everything has a reference, everything has a context. This post does not have one though ;).
Configuration files vs UI's to configures business rules/parameters vs Hard Coding in the source code vs Rule Engines vs.. Ain't hardcoding same as config files.. just the protocol changes or the environment where you plumb them changes or DEPLOYMENT changes. And ain't config files are nightmare to maintain as article says when you have piles of such kind. Isn't it better to keep them in the source code? Probably its not. High time to bring in Open source here... You get the source of MySql..change it to suit your needs.. you don't need my.cfg file to change the MySQL engine. Get into code.. and change. Grueling ?.. Works? You need the whole set of libraries, compilers at your disposal and sound knowledge of the source tree to do that. This I guess is the other extreme. We don't want that.. We want other wise.. Everything decoupled.. all the parameters are open for one to configure ..and in very friendly manner.. With out much effort.. without much implications.. Easy to maintain..Easy to Extend..
I am mixing system parameters with business rules/business logic (which the original post talks about). But to some extent they are part of same breed.. We have gone through many iterations of software development methodologies.. we talked about OOP, then AOP .. Component Oriented programming, Container Programming and what not. The mantra that time was "Just focus on business logic..". Now even that we are moving out to rule engines which business Analysts or Users can modify and maintain.. So what will be there for developer? Just to dvelop the glue between DAO (Data Acess Objects), Rule engines, other or even that would come from Application containers. A couple of years back there was talks about modeling the software rather than coding. Specially the Business Apps.. It seems that we have climbed the ladder from Assembly programming, C, Java, Workflow, business process management and modelling tools, etc. Isn't this the high time to sit down and think about all this and really decide on what fits for what needs?
All these configs, system parameters, rules are at different level in the software. If we ramify them in proper way the better of we are in taking a decision on where they should go. Some are meant to control the system parameters (server IP, memory parameters etc.) Typically all this goes to a config file or System Config UI. There are things which are to do with Applications. Good example of this is the tons of setups which goes in implementing ERP modules like GL, Inventory etc. Things like Currency Type, Conversion rules in GL and Costing Type (Average or Standard) in Inventory are very application specific. On top of systems and application configs are the Rules which should govern business process or some decision in the business process flows. Probably all this needs to go into Rule engines. Is it so trivial to decide all this?
Friday, April 06, 2007
Random thoughts and some Oracle E-Business suite learnings
Chilling out on this Friday afternoon of Singapore. A bright sunny day. Weather has been so for last few weeks with some shower now and then. Guess the Easter long weekend has come at the right time for me. Its been long I have catch up with whats happening around and the feeds from my favorite blogs. Its even longer I have posted last on this space.
Last few months were busy at social front. At work its usual stuff. Though I have started with new project since last few weeks and things are getting busier.
Off late I have been doing assignments in Oracle Applications aka E-Business Suite(mainly in the capacity of technical consultant) and it has been a rich experience. Though I have been working with Oracle Apps for some time, it was more with the perspective of extracting data for reporting and data warehouse applications. But This time it involved working head on with some of the core modules of E-Business suite including OM, Inventory, Financials etc. Technology has always fascinated me and tech stack of Oracle Apps was no exception. Lot of interesting learnings.
ERP are huge apps with so much to explore in terms of functionality, business process, technology components, software architecture and organization dynamics. Working in implementation project Oracle Apps really brings you close to all this aspects. I do prepare some random notes of the interesting things I come across about any software product. Some of the key things I discovered/learned about E-Business suite in the last few months of engagements:
Ad-Utilities for managing middle tier components.
Integrated data model. Example: there’s one entity hosting customer data which is referred by all the module ranging from Customer Management, Order Management, Advance Shipping
Open Interface tables to flow in or out the transactions from one module to other. The same interfaced tables could be used to bring the data from other not E-Business suite systems
APIs corresponding to virtually all the online functionality. The is key for any ERP application. Integration needs always requires creating master data and transactions from the scripts or programs. APIs make this simpler to approach since it will be impossible for any way to go and update all the underlying base entities without breaking the integrity. APIs have always been powerful since they centralize the business logic and all sort of integrity checks at one place. I will stop on API here. Every one knows about the advantage reusability, modularity, refactoring, OO and other core aspects of software designing.
Approaching integration with third party applications. This really requires proper planning for developing the custom scripts, testing and rolling out the customization.
Consistent UI. Consistent usability and user interactivity.
Power of Concurrent request manager.
I came to learn about CUSTOM.pll, which allows in non-invasive manner you put the custom hooks in the standard forms.
There were lots of learning on how to go abound customizing E-Business suite apps. CUSTOM.pll, database triggers, modifying standard reports (though not recommended), defining custom Application, DFF and KFF, lookups etc.
Coding standards. E-Business suite taught me some of the nifty coding practices.
One of the big learning was the philosophy and thinking that goes behind designing and developing packaged applications. The E-Business suite apps are perfect for business needs across industries and wide range of business requirements from different organization. This is achieved by the flexibility, setups and configurations provided by E-Business suite applications. On top of theses, there are avenues to do additional customization to achieve very specific business need. Sometime back I did post on how the development of software product differs from the custom solution, but Oracle E-Business Suite holds a special place. Lot of expertise, effort, planning and experience goes in developing products like E-Business suite.
There were many more though. E-Business Suite is huge and the above list in no way wants to undermine the complete set of functionality that it offers. These are just my personal learnings. One should check out E-Business suite Documentation to appreciate the sheer size and richness of E-Business suite applications at http://www.oracle.com/technology/documentation/applications.html. In process I also came across few of the blogs on E-Business suite including Oracle’s Steven Chan’s blog on E-Business suite technology, Chris Muir’s One Size doesn’t fit all and many more.
Friday, January 26, 2007
Good Blogs on Oracle technologies
Came across a very good weblog on Oracle and Java technologies at http://www.it-eye.nl/weblog/. The blog entries are contributed by the consultants of IT-eye, an IT services company based out of Netherlands.
They seem to be covering quite a number of Oracle technologies ranging from BI, SOA Suite, JDeveloper, Database, and others. Some of the posts on OWB had really good practical insights and this one gives a handy OMB script for creating tables in target module corresponding to every source tables. Probably the script could be extended to create a default mapping to load the data from source to target tables.
One more blog, again from the Netherlands, which I have been following for quite some time now is http://technology.amis.nl/blog/. The folks here share great project experiences on using Oracle technology and Applications offerings. Apart from Oracle technologies, there are often posts on projects executed using Oracle and open source technologies specially those related to Java.
Sunday, December 03, 2006
Good One..
I value the thoughts put forward by the author. Who does not know that over reacting or being short tampered is bad? However at times we loose our head and end up inflicting worst to ourselves. The post in some sense also touches the very old thought of “being positive”. As some one has said, “B+ is not just a blood group”. How true. What ever situation you are in, contemplate it properly before reacting on it. Showering anger on your family members, friends or colleagues or stressing up one self would ultimately affect your own physical, spiritual and social wellbeing.
Saturday, November 04, 2006
Practice makes a man Great
“The evidence, scientific as well as anecdotal, seems overwhelmingly in favor of deliberate practice as the source of great performance.”
The arguments in the article are quite true. In retrospect, if I look back to the days in school, university and last few years as Software professional, I have developed certain strong skills in programming and software development. And all the credit goes to diligent practice, lateral thinking, open to different ideas and ability to relate various topics to core fundamentals.
As article mentions “The good news is that your lack of a natural gift is irrelevant - talent has little or nothing to do with greatness.” I do quite agree with it. There are some things which one person does better than other. And if he goes on improvising them, he achieves emphatic success in that field. Elements like passion and strong interest are vital for any successful individual or business. However just having strong passion and lack of practice does not lead you to anywhere and everyone knows that. All in all the article gives insight on what is the simple formula of being successful.
Friday, November 03, 2006
Were the days spend in the Engineering School worth it?
Most of the India still lives with middle class mentality. The idea the prevails there is to get good grades in high-school, get admission in the best engineering school in the course which has best job prospects, and finally settle down with the “job for life” without even giving a damn thought of what are you interests, do you really want to do Computers or are you really destine to be theater artist. All that because there is lot of competition, a never-ending fight for survival and no room to introspect and think about what one wants. All that aside. Coming back to the engineering education system in India. I didn’t go to best engineering school but the one I joined had decent reputation at the state level. I joined Information Technology course without knowing a bit about what it means. Just knew that it’s to do with computer, is an upcoming field and has lot of job prospects. The college I went has a decent line up of the subjects. I learned courses ranging from Civil Engineering to Engineering Drawing to Simulation and Modeling to Compiler design. Honestly it was a good mix and I am realizing some value of all I studied back then. Seeing the other side of the coin, that is the teaching methods and how stimulating the environment was etc. Teaching methods were in someway exam oriented or rather to get things done or to just complete the course. But that said, the faculties were open for the discussion and ready to help one in pursuing his/her ideas or thoughts. What I feel is that lot depends on the individual rather than the system. System does play a great role but it is meant for masses and evolves over the period and influenced by lot socio-economical factors. The engineering education system in India calls for a revamp, however we don’t see it happening any time soon. The 50 years of legacy and the mindset would take time to change.
Sunday, October 29, 2006
Oracle Open World coverage by Mark Rittman
Monday, October 09, 2006
Google Code Search
So don’t count much on the Google Code search for the solution of any programming problem you have. I think it will take some more time when we have the search engines, which will take a problem definition something like “Write a program in PHP to convert degree Celsius to Fahrenheit” and give you a ready made or close to ready made code. Still a handy utility.
Sunday, October 01, 2006
Working at Oracle India Ptv. Ltd..
Why I joined Oracle India Pvt Ltd?
I joined Oracle India Pvt Ltd in Dec,2003 and worked there till Jan,2005. I was part of internal IT team over there. So after spending close to one year in small startups, this was the first time I started working for a big corporate. And working with big software companies is some thing all of us in software field dream of. There is always this curiosity to know how big this companies are, what is the culture out there, the systems they use, the processes they have, the methodologies they follow for there product developments, how does their sales work, how do they support their products, the benefits they have for their employees, the campus and at last but not the least, the people they have. My reason for joining Oracle India was to gain some insights on how a big corporate works and to be part of their culture, the team, and to groom both my technical and soft skills.
My Experience at Oracle India
First and foremost thing, which I gained at Oracle India, was to develop strong interest in Data Warehouse and BI technologies from Oracle. After a comprehensive boot camp for one month, I was put into Business Intelligence team of Apps IT. Apps IT is the group within Oracle which looks after internal implementations of Oracle tools and Applications which it uses to support its one business functions. BI team was supporting wide range of BI and data warehousing applications, which were used by the global user community. I was mainly part of Analyzer implementation (both OFA and OSA). Working at Oracle was an enriching experience. There were great bunch of people around you, ranging from the ones with strong technical skills, to the ones who are sage advisors to the ones who are extremely good project managers to the full time party animals.
Learnings at Oracle India
There were strong technical learnings. On job, I learned Oracle Express and Analyzer product families. I developed strong fundamentals of this tools and how to best use these products for a particular business needs. Being part of BI team, I also got to learn other products like Discoverer, Oracle Warehouse Builder and EPB (Enterprise Planning and Budgeting, a next generation product which would replace OFA). I had significant exposure to Oracle database, PL/SQL, SQL and SQL tuning. Best place to learn any Oracle tools and Applications is Oracle itself. And that’s what I realized when I joined Oracle. It’s not just the resources like documents, webinars, product demos etc. to which you have access to, but the best part is the people around you who are always there to help you. Apart from BI tools and Oracle database, I had a significant exposure to Oracle eBusiness suite. Thanks to the boot camp, which covered things like Oracle Forms, Oracle Reports and AOL (foundation technology of Oracle Applications.)
Above to the technical skills there were loads of learnings at soft skill front. Over the period, I gained great amount of confidence both in the written and verbal communication. Honing my interpersonal skills was one more advantage of working with Oracle. Apart from this,
Why I left Oracle India
After saying all the above and ushering lot of praises about Oracle, its very difficult to justify why I left Oracle. And that too, just after 14 months! My work at Oracle involved both supporting the existing application and enhancing them and also rolling out new applications. Though rolling out new applications was 25% of what I was doing, but that was what I enjoyed most. Most of my work involved supporting and enhancing the existing implementations. However, I was looking for an opportunity where I was part of end-to-end implementation of some BI or data warehouse solution from scratch. That’s something I was not seeing in the horizon over there. Also the work at Oracle was not that intense. It was too chill-pill. I was looking for more challenging, more customer facing, more intense profile, a bit more pressure and a bit more ownership. All this culminated into leaving Oracle India and joining Ness Technologies at Singapore. More on my experience at Ness Technologies some time latter.
I am writing this post almost two years after leaving Oracle India. All what I have said here could have been influenced by the time I have spent in Singapore and at Ness Technologies. However I have tried my best to put the thoughts as accurate as what they were at the point of time when I joined Oracle and left it.
Developing Software Product vs Custom solution.. some random thoughts
Of late I have been thinking about this a lot. How is developing a software product different from building a custom solution. And quite often indulge into casual discussions with some of my friends out here in Singapore. I was thinking of putting together a well-structured elaborate post on this topic, but seems that it would take a while for me to sit down and collate all my learnings, discussions and thoughts on this. For now just thought of putting up random thoughts on this topic.
First of all let me put on the table, what I mean by Software product and custom solution. By software product I mean those set of software, which are build to sell off the shelf. These are the software, which are NOT developed for any specific customer, but for general use. Of course this software comes with various features and functionalities out of box and there are some points of extension and customization. The software product is installed or setup or implemented by the customer to address their specific business or personal need. There are tons of ways to classify the software product but the details are outside the scope of this post. But the basic principle of software product or to that matter any product is that it is meant for a particular community and not a specific customer. Needless to give the examples but nevertheless here are few: Microsoft Office, Acrobat Reader, Oracle database 10g etc
The other category is what I call custom solutions or custom software solution to be precise. By this I mean the software build to address a custom need. This solution is targeted for one particular customer or a particular requirement or a specific business processes. The software (or the solution) is not build to sell of-the-shelf. Even maintaining existing enterprise applications and enhancing them falls under custom solutions. A custom solution could be one build from scratch like a Web Based Budgeting and Reporting solution build using Java and HTML technology. Or it could be extending the functionality of standard applications by adding necessary customization.
I do acknowledge that there is no easy way to classify all that is happening in the software world into these two categories. There are some things, which are in the boundary and don’t really fall straight in to one of this category. We keep hearing things like frameworks or blue prints, which are sold commercially these days. These frameworks are in turn used to develop custom solutions around it. So where do they fall? Similarly there are offerings forms Google like Gmail, or Clendar or to that matter any web service, which is out there in Internet. Should we call it a software product or a custom solution? Lets us keep ourselves away for all these debates.
Getting back to the main idea of the post: how does developing a software product differ from a custom solution.
Developing a software product according to me is:
- More organized and planned engagement.
- Lot of planning goes before embarking the actual development.
- There is lot study done in terms of gathering the requirement.
- Things like Focus group and user community are foundation for this product
- Involves Studying features and functionalities of other competitive products in market.
- Most of the time, a prototype or a proof of concept precedes the actual development
- There is lot of flexibility while developing the software product it terms of choosing the technology, etc.
- The teams are relatively bigger. Flexibility for the a developer to be focused on particular module or set of module
- The quality process is more elaborate. Lot of testing both internal and external is done
- API and maintaining reusable components libraries is critical
- Wide adoption of software best practices and better design principles
- Bug fixing and support is more comprehensive
- Licensing and software delivery are important consideration
- Software packaging and installation mechanism are important component
- Change control is ubiquitous
- System design documents are user manuals are of good quality. Also the documents are constantly maintained with the new release of software product.
On the other side developing a custom solution is:
- Planning process is not very elaborate
- Studying of requirement is not very comprehensive. At times requirement gathering processes continues long after the actual software development has started.
- The scope of the solution at times is not well defined
- Prototypes or proof of concepts is not that frequent.
- In terms of choosing the technology or tools the decision has already been taken by the customer or the during the presales exercise
- The teams are relatively smaller with one person playing multiple roles at times.
- API and maintaining reusable components is not that critical if the custom solution is relatively small.
- In larger solutions there is proper bug fixing setup. However for the smaller solution the bug fixing and patching is very adhoc
- Licensing is not of that grave importance. However there is lot to deal with in terms of SLA (Service level Agreement) while delivering a custom solution.
- Software packaging and installation mechanism are not of significant unless the solution is build for large user base, which needs to install the software on their PC.
- Change control in place for most medium and large-scale custom solution.
- Design documents are part of any custom solution project however at times these documents are not maintained with the new releases or the changes in the existing release.
All said, the above does not always stand true. With the smaller software product developed with Agile methodologies do forego some of the items mentioned in the software product development. Similarly with the large custom solution developed under a strict quality process does follow lot of the items in the software product development
Saturday, September 30, 2006
New Google Reader
RSS feeds have been one of the great revolutionary things of Web 2.0. I think after Email, IM, the RSS is next great thing, which happened in Internet. Sometime back I attended the presentation at a conference talking about shift in the way we deal with Internet. Instead of pulling the information out from Internet, we would be pushed with the latest information, which are of our interest. That was 2003. And within few months of that conference, technologies like RSS and ATOM came into existence. And within few months they have became so prevalent or pervasive. RSS is getting applied everywhere.
Talking about the ways RSS technologies is being applied. News Sites, Blogs, Forums, Corporate websites are few examples of where RSS is being applied. Now a days even all the social networking sites like Flickr, MySpace and email services have RSS feeds. With RSS, you can create one dashboard which you go every day for monitoring the new content or activities at different blogs, forums, news, any new photo getting uploaded at Flickr by your friends or any new job that got posted on the a particular job portal matching your criteria. In some places RSS feeds are taking over the old Email alerts, which of late has got bad reputation of spamming your mailbox. RSS is a new way to market the new features or inform the users of the new launches.
Monday, September 18, 2006
Yahoo! Mail beta
- Tabbed mail browsing
- Right click menu shows the custom menuitem from Yahoo! and not the default browser context menu
- Split view of message list and the message content. Similar to any desktop mail client
- Compose window is quite similar to Outlook
- One can view RSS feeds subscribed in My Yahoo.
Of there are some in Gmail which are quite handy and not yet in Yahoo! mail beta:
- Attachment is not that seamless like Gmail
- Messages are organized in conversations which is till not the case in Yahoo mail
Sunday, September 10, 2006
Startup School
I always have a thought of doing something of my own at some point of my career. But for now, would continue working with the corporates, garner some experiences and then would see.
Sunday, September 03, 2006
Whats the better language for my application?
According to the article an important thing, which helps you decide is the skill set you have at your disposable. Apart from this the specific needs of the applications like the application should run on Unix and Windows platform or likes. Apart from all this, the one thing, which I would consider, is the application frameworks and reusable components or libraries available out there in the community of these programming worlds. If there are some frameworks or the set of libraries, which would fit in readily in your application, then it’s a big advantage.
Writing Hacks
Scott Berkun is always a good read. He has a unique and intriguing style of writing. And when he shares the tips on how to get started with writing and how to write better, then it should be great. Whether its writing something or doing a painting, or designing a UI for an application or sometime even writing a piece of code, for all of this you have to break a similar kind of barrier. How to get started? And once you get going it becomes easier. For me writing a piece of code appears to be easy now then what it was before 3 years. All this because I have been doing it for quite sometime. Same would be the case with writing. Once you get going for sometime, you become more comfortable. Another thing, which I felt was a major barrier for writing something, is the concern for quality of content. You read lot stuff here and there and you feel that you should be writing of the same quality. I overcame this by thinking as of I writing for my self. It does help in getting started. Once you have confidence you can expose your writings on the blogs, etc.
Friday, September 01, 2006
Web Archive
Monday, August 28, 2006
Duplicating the data in a MOLAP application - Does it always hold good?
MOLAP applications are meant to be lighting fast. So there is lot of summarization and aggregation done in the application. Most of the calculations are part of data load and aggregation batch process. Very little gets calculated while querying the data. However there are quite a number of calculations, which are made part of formula (in Oracle Express) or dynamic calc (in case of Hyperion Essbase). Often these calculations are moving total, ranking, calculating Year to date, rolling quarter, variance etc. And ideally these calculations should be part of formula and or dynamic calc, because:
- Because this calculations are very simple and does not involve many data values to operate on
- Sometime this calculations involve applying some formula with different weight:
Now this weight could change over the period as the organization tactics change. And this formula could evolve. So it’s better to keep them on the fly.
Even though there are things which best fit in as on-the-fly calculation, I bet there would be many implementations out there calculating them in the load scripts and storing. So all the disadvantage I mentioned for duplicating relational tables holds for MOLAP too. The extra logic needs to be written, tested and maintained. Any debugging would have to check the base data, and the intermediate data. If there are any bugs in the loading script, the data needs to be cleaned up, reloaded and re-aggregated. Would it be dynamic calculation and if there is any bug, only the formula needs to be changed no reloading of data is required.
At times there are scenarios were you want to expose a cube with the respect to fewer dimensions and not all. In OFA (Oracle Financial Analyzer, a Financial reporting application using Express as backend) there are times when FDI (Financial data item a.k.a. variable or cube in Express) are required to be exposed with fewer dimension and not all. So for this scenario also, one should avoid creating a stored FDI and replicating the data in it. Better approach would be to have the data rolled up in the base FDI using hierarchies and creating a formula FDI on top of base FDI with limiting the dimensions to “Total” for those which are not to be exposed for analysis for that FDI.
Lets take an example where dynamic calc could enable you to achive reporting the aggregated data. You have a following data model:
Dimensions:
Market (with hierarchy All Market -> Region -> Country)
Years (with members like 2006, 2005 etc. No hierarchy)
Product (with members P1, P2, etc. No hierarchy)
Cubes:
Gross Sales <Year, Product and Market>
Tax Rate <Year, Market>
How could we dynamically calculate Net Sales <Year, Product and Market> from the above?
Net Sales = Gross Sales * (100/ (100 + Tax Rate))
Lets see what’s wrong with this formula? Tax Rate is something you can’t aggregate on Market. Tax of India + Japan + China + Singapore etc. would not give you the tax rate for Asia. Neither would the average of this give you. So you don’t have tax rate for “Asia” and hence above formula would not return you the Net Sales for “Asia”. All you might need is another stored cube called “Net Sales” which you can use to store the “Gross Sales” less “Tax”. The cube can then be aggregated to return the numbers at Asia or All Market.
Not trying to contradict what I mentioned earlier. For this scenario and similarly many others, there is no direct way to achieve using the dynamic calc. In Oracle Express you can end up writing a SPL code which can do so dynamically, however in nutshell it would be adding the net figure of India, Japan and so on and returning the result dynamically. This could slow down the performance depending on the number of members you have. If you have 220 markets, the All Market level calculation would take quite long to come through.
To recap what I said in this and last post, is that there are different scenarios where one gets inclined to replicate the data either with minor transformation or aggregate. However one should consider doing this only if the on-the-fly calculation can not achieve the said results with permissible performance.
Sunday, August 27, 2006
Some Web 2.0 stuff..
Few Web 2.0 things, which I started following in last few weeks. Techcrunch is one of the best tech news site I have found in the recent times. It is sort of one stop shop for all the tech and web 2.0 related news. The content is very concise and complete. It’s always good to browse through happenings around in the tech industry. Digg is another news site. Though I heard of it few years back, but newer used to follow things over there. In the last few weeks I have started reading through the stories at Digg. Like Tech crunch, even this is sort of one stop shop for tech news. Most of the times, the stories in Techcrunch and Digg do overlap. But Digg gives a different taste. The commentary going around is good to read.
Few more handy Web 2.0 utilities which I started using in the last few weeks. Guess what? All are from Google. Calendar , Reader and Writely. The altruistic Google has been generous as like ever before. As I always write, they are showering best of the collaboration and personal management utilities, all as SaaS and for free. The usability, the UI, the features and the functionalities, all unmatched compare to any commercial desktop tools. Of course there are quite a number of limitations compare to desktop tool some because this tools run from browser. But the best all this tools have is the Web 2.0 community related features. You can share the calendar, you can view others calendar across the globe, you can create the documents in writely, share them, co-author the a document by multiple people, maintain versions, blog them, publish them as HTML and PDF and what not. The Google Reader is an excellent RSS feed aggregator. Initially I was big fan of My Yahoo. It was very easy to subscribe the feeds and collate them at one place. Easy one page snapshot of all the feeds. Easy to customize the interface. However, you cannot read the original stories for this feeds in the same page. Got to open it in the new window or so. With Google Reader its damn easy to read through the whole feed. At least for those who publish the whole story or article in the feeds. TechCrunch is one and most of the blogs at Blogger do publish the whole article in the feed. So its quick to scan through the whole story without switching the tabs. However what I miss in Google Reader is to see all the feeds in one page, in one view something like My Yahoo. Probably there is a way you can do it. Let me explore in the coming days. For time being I am using both My Yahoo and Reader. Of Course one can look for the elaborate reviews of these tools on Internet and blogsphere.