Thursday, November 09, 2006

New features in SharePoint 2007

I have been using SharePoint for sometime and it's really cool. The newer version promises to be better. I am hoping to be able to try it out as soon as we upgrade.

Sunday, October 08, 2006

Free book on "1001 best things said about work (and the workplace)"

I have read only few quotes but already fell in love.

Click here

Sunday, September 24, 2006

GigaOM » FON selling $5 Wireless Router

I am blown away by this social sharing of WIFI connection company

GigaOM » FON selling $5 Wireless Router

Sunday, September 17, 2006 - The complete Web 2.0 directory.

Feeling hard to keep up with hot web 2.0 sites. Your one stop shop is below web site :) - The complete Web 2.0 directory.

Tuesday, September 12, 2006

Portal study by Aberdeen Group

I have been thingking about trying out the JBOSS portal sometime and glad to find out that it is the #1 open source portal as per the below report. Another big surprise for me is that SAP & Oracle are ahead of IBM in responsiveness to customer requests. But surprisingly the report failed to mention the #1 portal amongst high profile vendors.


Sunday, September 10, 2006

10 Avoidable IT Interview Flubs

Lot of these points make sense. Happy interviewing :)

10 Avoidable IT Interview Flubs

Saturday, September 09, 2006

Gartner's 2006 Emerging Technologies Hype Cycle Highlights Key Technology Themes

So you thought that there is only Ajax enabled web 2.0 to figure out. Well that is just one of the many emerging technologies as per gartner and I feel it makes sense. Happy surfing and learning :)

Gartner's 2006 Emerging Technologies Hype Cycle Highlights Key Technology Themes

Carson Workshops Summit - The Future of Web Apps

Looks like an interesting conference for what is this thing called "web 2.0" but fees of $295 is a bit high for me :(

Carson Workshops Summit - The Future of Web Apps

Thursday, August 31, 2006

Roles: Composable Units of Object Behavior

Roles: Composable Units of Object Behavior: "A significant new part of Perl 6’s object model and type system is the addition of roles. Part of their origin is an implementation in Smalltalk (there called traits). They also solve some systemic problems of other OO systems. Why are they useful and how do they work? What is a Role? A role is a named collection of behavior — a set of methods identified by a unique name. This resembles a class or a type, in that referring to the role refers to the combined set of behaviors, but it is more general than a class and more concrete than a type. Put another way, a role is an assertion about a set of capabilities. For example, a Doglike role identifies the important behavior that any doglike entity will possess: perhaps a tail attribute and the methods wag() and bark(). Even only this much is a great advantage to using roles. Presuming you have a method that needs something Doglike, you can ask “Does the class or object I receive behave in a"

Thursday, August 24, 2006

Enterprise build system

I am involved in providing an enterprise build system at my workplace. We are using maven/cvs. We have something that works but with lot of room to improve. Below article lists some features that are interesting on this topic.

:: zutubi :: articles :: The Road To Build Enlightenment
:: zutubi :: articles :: The Road To Build Enlightenment

Wednesday, August 23, 2006

Top 5 business maxims that need to go - Part II

I am very moved by these 5 business ideas that must go as I must admit that I did believe in at least 2 of them so much....

Top 5 business maxims that need to go - Part II

Sunday, August 20, 2006

Java #3

Signature of main()

The signature of main method in java is as shown below:

public void static main(String [] args)

[copied from google operating system] Google's Master Plan

Google's Master Plan: "Maybe we should stop trying to guess the next Google services. What's next for Google is right here on a big whiteboard from their GooglePlex. The photo was taken last year by Niall Kennedy and includes a small part from their master plan. As you can see many projects that don't have a tick in the whiteboard have been launched.A bigger and more comprehensive image is available here, but it's not very clear.As you can see, there are a lot of verticals and new domains: travel, health, TV, games, reviews, marketplace, dating, real estate, jobs, mortgage, pets, music and many ambitious projects like redesigning TCP/IP, and HTTP and creating a new generation of web based on BitTorrent.Other pieces from the puzzle (half jokes, half serious projects): "

Thursday, August 17, 2006

My first podcast

Wow!! this is cool... enjoy my first podcast.


Monday, August 07, 2006

[copied from IBM blog] A new company enters the enterprise mashup space

A new company enters the enterprise mashup space: "Dion Hinchcliffe asserts in this post that enterprise mashups are becoming increasingly important to IT organizations and the business they support. However tools to enable the creation of enterprise mashups are few and far between. In fact, while he notes 'Not sure about any of this? IBM has clearly identified mashups as a key enterprise trend as well', he only cites one tool that meets all his criteria: 'However, I've recently come across one product that clearly shows almost the full potential of enterprise mashups in a single package, despite a few rough edges. Datamashups.comI recently came across Applibase's impressive site, and more than any other product I've seen so far, it clearly demonstrates the possibilities and potential of enterprise mashups guided by end-users and shared amongst co-workers. The site has an excellent service preview that lets you quickly start assembling mashups visually, right online, using a rich palette of pre-existing widgets, feeds, data from local and remote SQL database"

Friday, August 04, 2006

[originally at chiefhappinessofficer] Get lucky at work - be positive

Get lucky at work - be positive: "My driving force in business has always been enthusiasm. I’m easily amazed and get curious and fired up about many different things. In fact, I refuse to work on anything that does not grab me in that way. I remember one meeting I had with a woman who was… let’s say slightly less positive. At one point in the meeting, she said “You’re very positive, arent you?” I had to agree, that that was indeed so. It was only after the meeting that I realized that she’d meant it as criticism :o) Positivity has been getting a bad rap at work. If you’re too positive you can be accused of being pollyannaish, uncritical, unrealistic, silly, etc… “Well,” some people say, “it’s all very good for you to be so optimistic but some of us have to work in the real world.” And while there are many great reasons to be more positive at work, there’s one I’d like to mention specifically: Being positive at w"

Thursday, August 03, 2006

[originally at] Article: Binding XML to Java

Article: Binding XML to Java: "Manipulating XML data easily and efficiently in Java remains a challenge. In this article, Ed Merks and Elena Litani explore, through the use of an example, how the Eclipse Modeling Framework solves the XML binding problem and how it compares to alternatives. "

Wednesday, August 02, 2006

[from original article at] Ease the integration of Ajax and Java EE

Ease the integration of Ajax and Java EE: "Patrick Gan has written an article for IBM-Developerworks that provides an overview of how Ajax can be integrated into a Java EE Web application. Part of the integration is trying to reconcile the differences in the communication models used by Java EE and Ajax. To help reduce complexity, Patrick points to Apache Shale and DWR as showing promise. "

[from original blog by bobby wolf] Effective SOA Governance

Effective SOA Governance: "So how do you do SOA governance? IBM has a new whitepaper available, 'Effective SOA Governance.' It's authored by a couple of IBM's leading experts on the topic. You need a free dW account to download it. If you'd like to learn more about what governance is in the first place, check out Introduction to SOA governance and Service Governance."

[copied from martin fowlers blog] Writing Software Patterns

Writing Software Patterns: "Updated web site: A while ago I started to put together a little article to describe why I write patterns and pass on my opinions to others about what makes good patterns. I didn't finish it at the time, but recently I dusted it off and finally finished it."

Monday, July 31, 2006

[blogged from google reader] Open Service Oriented Architecture

Open Service Oriented Architecture: "Vendors have established an organization to develop a standard programming model for SOA. The Open Service Oriented Architecture (OSOA) collaboration is a group of 15 vendors who are working together to develop a standard programming model for SOA. IBM is one of the founding members. Nine vendors who have just joined include Sun Microsystems, Tibco, and Red Hat. The SOA programming model being developed is based on service component architecture (SCA) and service data objects (SDO) specifications, which were created by IBM (SDO was co-created with BEA) but are now being developed by this group of vendors. Thus far, the only products that implement the SCA spec (which includes the SDO spec) are from IBM: WebSphere Process Server and WebSphere Enterprise Service Bus. Apache Tuscany will be (is?) an open-source implementation of the specs. I've talked about SCA and SDO previously: Service Component Architecture (SCA) Industry Leaders Endorse SCA Spec David Chappell: Why Service Component Architecture Is Big News Apache Tuscany For more information "

Sunday, July 30, 2006

AJAX Developer Resource Center

Great source of AJAX info from Sun. Your first stop for AJAX related material. Obligatory quote: "Get ahead of the curve and start developing AJAX applications today. This is your source for Java tools, technologies and expert advice."

read more | digg story

Saturday, July 29, 2006

Johnson on Feeds

Johnson on Feeds: " Dave Johnson gave a talk this morning at a local XML interest group. His slides (PDF) are the single best introduction and overview I’ve ever seen about feeds and syndication and RSS and Atom and all that stuff."

Thursday, July 27, 2006

Out-Of-Container Testing When Using JNDI Lookups

Out-Of-Container Testing When Using JNDI Lookups: "Many applications, particularly J2EE applications, use JNDI to look up their resources. While this is a convenient and useful service, it makes components that depend on the lookups harder to test outside of a running application server. There are a couple of strategies that can be applied to still acheive the much desired goal of testing these components outside of a running server."

Saturday, July 22, 2006

Copied this from google blog - Embed MP3 Files Into Your Website

Embed MP3 Files Into Your Website: "You have an MP3 file (a podcast, a song of your band, a lecture) and you want to share it with the visitors of your site. You can just put a link to the MP3 and let people download it or you can include it as an object and let the browser play it with a plug-in like QuickTime (and most of the times also crash the browser). Most people want to preview the audio and not wait until it downloads completely. You can play a partial MP3 file in audio player, but many people aren't aware of that.But there's another away: a Flash player that allows you to pause and rewind the MP3. It's like an audio version of Google Video or YouTube, with the difference that the file is hosted on your server (or on another server). While there are many solutions based on Flash, this is the one I like the most. It's a modified version of Odeo player, that's used to play podcasts on just have to replace [MP3 file address] with the actual address.Here you can see how it looks (in this audio, Marissa Mayer talk"

Thursday, July 20, 2006

Copied from InsideLotus Blog - IBM WebSphere Portal Version 6 one stop shop for info

IBM WebSphere Portal Version 6 one stop shop for info: "IBM WebSphere Portal version 6.0 is just around the corner. It can be tough keeping up with all the press releases and content on the upcoming version. While I have a slew of Portal v6 bookmarks, I thought I would share my favorites and the ones I most point customers to.IBM WebSphere Portal Version 6.0 Buzz pageIBM Workplace Web Content Management Version 6.0IBM WebSphere Portlet Factory Version 6.0Why Upgrade to IBM WebSphere Portal Version 6.0IBM WebSphere Portal Version 6.0: The Face of SOAIBM WebSphere Portal Version 6.0 DemoTed"

Wednesday, July 19, 2006

The world is flat

Here is the video link to Thomas Friedman's presentation to MIT audience about his book The World Is Flat. One of the best books I have read in a while and gave me a different perspective of the world - offshoring, web 2.0, terrorism, etc.

Guide to Those Useless Windows XP Services

Cool link that I dugged and really should have come from microsoft for at least tech aware people. Nevertheless, now we have it :)

read more | digg story

Tuesday, July 18, 2006

Martin Fowler's agile approach to offshore development.

An excellend article from software development methodology guru Martin Fowler on how to apply agile methodology to offshore development. Something worth noting for likes of Infosys, IBM, Accenture, et al.

read more | digg story

Monday, July 17, 2006

Artificial Intelligence Turns 50 Years Old

Computers can beat the world's best chess players, but we still can't get them to think like a 4-year-old. Artificial Intelligence has managed to exceed, and fall short of, our grandest expectations. A look back at what's been accomplished in 50 years and a look ahead at where the field is going.

read more | digg story

Tuesday, July 04, 2006

Tabblo - online photo story site

Found out about Tabblo at They provide a way to share stories online using photos. You upload to the site and weave a story around your pictures. I liked it somewhat. Give it a spin.

Great tips for job seekers from Niniane Wang.

Found the below great tips from Niniane Wang who is currently a tech lead at google.

Resume tips at

Interview tips at

Niniane Wang's own resume at

Another great resume from a google developer is at

Niniane Wang's blog is at


The class name should be the same as file name

So if your class name is CustomerOrder than the file name should be If not than you would get compile time error. Editors like eclipse/RAD flags this right away while you are coding.

Sunday, July 02, 2006

java #1

Java is platform independent which means you write code once and it can be run on any platform.

You compile your .java files into .class files or package .class files into .jar files using java compiler. Java complilers are platform dependent so you have compilers for windows, linux, etc platforms. The .class/.jar files are run on something called java runtime environment, JRE. These JREs are platform dependent again.

So the idea is that .class files are platform independent but java compilers and runtime environment are platform dependent. So as developers you do not have to worry about platform issues.

Friday, June 09, 2006

Week of 06-09-2006

For my ongoing project to glue the missing pieces between ibm portal and documentum this week i was busy cleaning up my code mostly. There were code fragments that was not used and I took those out. Fixed most of the issues reported by checkstyle, findbugs, and pmd reports.

Another key feature was to parse the server side include files as well. The idea is take all relative links published by documentum to modify for portal to recognize those. We are using the wps:urlGeneration tag to do that. The issue was that include files were being ignored but that is fixed now.

Next week I am hoping to provide caching for parsed content files and navigation files.

Also, read up an article in DDJ on web 2.0 and the key thing that I got was that the new brave web world will be more contextualized and collaboration driven than ever before. Another interesting information was software engineering podcast on domain driven development. We seem to now have model driven developement and event driven development as new paradigms as well. Interesting and hope to have fun learning more on those.

Thursday, June 08, 2006

Tuesday, June 06, 2006

Week of 06-02-2006

I am currently involved in the development of a portal project using IBM websphere portal. The project involves integration of portal and documentum based publishing. It is surprising that there is no direct integration between the two products, something like what BEA portal and documentum has. Here one system has no idea about the other so we are writing glue code that integrates the two. We are providing customization around personalization, navigation, and content rendering.

Project will continue for few more weeks and this week was focussed on integrating the navigation feature. Authors will be publishing the content and associating the navigation with taxonomy files (represented as xml files) and our glue code will take that content and render it withing a portal page. Navigation glue code is in a custom portal theme which paints the left nav. Now I will be focussing on the different scenarios how the navigation should behave. There are several requirements where the entire tree will be displayed or display just the same level nodes and so on. Each level is denoted in the taxonomy file and there can be n-levels.

Continuous integration thoughts

I came across the continuos integration concept a while back and found the idea interesting. I have been developing j2ee applications for a while in teams of 1 to 15 people now and this seemed like an helpful process to deliver less buggy code in a well controlled environment. But I have looked at this concept at a very high level and hoping to dig a little deeper in future. What prompted me to blog was chance hit at Martin Flower's blog on the subject at :

One of the issues that we have been facing is how to do unit testing of components that go out to external systems like database and web services. And this article sheds some light on what possible steps can be taken :

Need to start looking into this more seriously.

Sunday, June 04, 2006

Why not integrate design patterns directly into java language?

I have been doing java programming for over 5 years now and trying these days to understand the design patterns better especially the ones proposed by gang of four. The more I read these design patterns the more I feel that these patterns should have direct support in the java language (and for that matter any OO language). I mean think about this for a minute why not let the language evolve in the direction of best practises by building the same into it so that there is less and less scope for doing things wrong. I believe that if there are more than one way to do something and a particualr way is a design pattern or best practices than it should be directly built into the language as default and if someone wants to use some other way than he has to follow extra steps to do so. Today you have to follow extra steps to do the right thing.

I am hoping to post my thoughts on each pattern as I read more about it. Some initial thoughts are as follows. Take Observer design pattern, it is currently built into java which is good. The Singleton design pattern support is somewhat provided by java's static keyword but should be expanded so that it is not required to worry about doing those extra steps of making the constructor private and providing getInstance() method or front it by Factory pattern and so on.

test for tagworld widget

Wednesday, May 31, 2006

some c# stuff

I have been for sometime working on a .NET project where we are using c# to make web service calls and populate an excel sheet. I would be blogging my experience while working on this project as it relates to .net, c#, and vsto (excel mainly). I have mostly J2EE experience so this is a very interesing as well as challenging experience. I would also like to blog some cookie cutter code or just what I think is useful.

Some .net training notes

Below are some notes that I took while attending .NET training which is useful.

there is hard cast and soft cast, examples below

int x = (int) obj; //hard cast, so if obj is not of type int there will be class cast exception
int x = obj as int; //soft cast, in this case if obj is not of type int than x will be null

Boxing C# has a feature called boxing and unboxing which is basically copying value types from stack
to object on heap and vice versa. An example is below:

int x = 3;
Object obj = x; //boxing
int y = (int) obj; //un-boxing.

Second more subtle example below:

Console.WriteLine(" {0} ", 3); //boxing

Boxing from performance perspective is not good so best to avoid. So for the above
examples change as below.

int x = 3;
Object obj = x.ToString();
int y = int.Parse((string)obj);

Console.WriteLine(" {0} ", 3.ToString());

Use command line utility, ildasm, to check generated MSIL code if boxing code is generated.

ildasm <name of dll>

WMI -- windows management and instrumentation, can be used for performance analysis.

keywords: constructor chaining, virtual chain of methods, sealed classes,
marker interfaces (interface with no methods)

use "is" in C# is same as "instanceof" in java

in c# it is possible to hide methods of implemented interfaces by using interface
name for method declaration. So to use it you have to cast object to the specific

DataSet -- reads and remembers -- composed of DataTables. DataTables composed of
DataRows and DataColumns

DataReader -- just reads

DataSet uses DataReader to get the data.

For very small amount of data use DataReader to get the data and store in some
collection object like arraylist, etc instead of using DataSet.

With DataReader you have to explicity open/close connection but with
DataSet since you are using DataAdapter it will open/close connection

best practices --

DataSets are typed and un-typed. If you have xml xchema (or can create one) than
DataSets can be created out of this schema. typed are faster and compiler checked.
Also, you are using GUI to auto generate DataSet code.

DataTables and DataSets can keep track of changes (diffgram).

Use Transaction objects if rollback is needed.

Config file
App.config is default, do not chnage the name. This file can be added to projects. Works only
for .exe and not for .dll

Web Services
proxies stand between client code and web service.
.asmx files represent web service in .net world.
.net has something similar to java annotations called "attributes" (just declare above method definition).
you can type the location of .asmx file in browser which can be used for testing.
.asmx?wsdl will return the wsdl file
wsdl.exe /l:CS /o:c:\testproxy.cs <wsdl-url> //will generate client proxy code, another way is to use webreference from IDE.
for webrefernce there is an option to update web service
for webservice proxy you can set credential, timeout, proxy, etc.

to run .xls without running dll run the .xls by pressing shift key

if a solution has only execute permission (and not full trust) than web service call will fail.

PIO code is under c:\windows\assembly folder, format of the file name is

+= is used for event registration called delegation

-= is used for de-registration

if += is called 3 times and -= is called once than the registration of event is still ther, you would
need to call -= 2 more times to actually un-register.

dlls get downloaded in "documents and settings"...."application data" directory.

AssemblyInfo.cs has version number, [assembly: AssemblyVersion(" 1.0.*")], which is used for creating
different versions of the dll. this version gets referenced in c:\windows\assembly\download folder

to combine multipe ranges can use "union"

RecordSet in un-managed code is equivalent to DataSet in .net, there are apis to copy from one to another.

To add a windows form to excel, add a form and than from officecodebehind create an instance of

Also, since windows form is built into .net no need to worry about registering events like
onclick, etc but for excel you have to worry.

When need to pass data from form to OfficeCodeBehind, it is possible to pass OfficeCodeBehind
to form class or other way around. Second approach is preferred where form class provides public
api to access data which is than called by OfficeCodeBehind.

Delegates holds references to callback methods

delegates can be called asynchronously.

difference between ABO and ABO.NET

At a high level ABO.NET is an enhancement over ABO as it provides support for disconnected mode and is integrated with XML. Will make more enhancement to this blog as I learn more. One more note is that ABO.NET looks very similar to SDO (Service Data Object) in J2EE world.

Wednesday, March 08, 2006

JSF notes on event handling

Three different kinds of listeners:
  • Phase listener -- listener is invoked as jsf goes through each of the 6 phases, you can register for a specific phase or all of them.
  • Action listener -- listener is invoked when an action like command button is clicked.
  • Vlaue change listener -- listener is invoked when an input component like textbox value is entered and form submitted
There is subtle difference between the use of action handlers and action listeners, handlers are meant for business rules, iterfacging with backend systems, and
navigational logic whereas listeners are meant to handle with UI elements only.

Action listeners are invoked before action handlers.

Value change and action listeners can be added as UI element attibutes as well as tags. It is better to add as tags.

Below are the execution of different phases for different scenarios:
  • value change listener --> 1 -- 2 -- 3 (listener called) -- (4 -- 5 -- 6)
  • value change listener with immediate --> 1 -- 2 (listener called) -- 3 -- (4 -- 5 -- 6)
  • action listener --> 1 -- 2 -- 3 -- 4 -- 5 (listener called) -- (6)
  • action listener with immediate --> 1 -- 2 (listener called) -- (6)

JSF General Notes

Some notes from the core jsf servlets book.

  • value binding expressions, eg., "#{....}". property getter is invoked when the component is rendered and setter is invoked when when the user response is processed.
  • method binding expressions
  • JSF connects the view and model
  • each ui tag is associated with a tag handler. tag handlers collaborate with each other to build a component tree (not necessarily binary tree)
  • encoding is when the renderer of a component generated the output. eg., html output
  • decoding is when the html elements are processed by JSF container to do things like update component values, navigation, etc.
  • six life cycle steps: restore view, apply request values, process validations, update model values, invoke application, render response
  • action methods have 2 roles, first carry out the model updates and second tell the navigational handler where to go next
  • action method can return null to indicate that the same page should be redisplayed
  • all form controls (ui elements like textbox, etc) generated by JSF have names that conform to formName:componentName. if you do not specify id attributes, jsf framework creates automatically
  • DataTable : The body of h:dataTable tags can contain only h:column tags and all the other component tags are ignored.
  • DataTable: value attribute can be set to an array, List, ResultSet, javax.servlet.jsp.jstl.sql.Result, javax.faces.model.DataModel
  • DataTable: h:dataTable wraps objects in a model that extends the javax.faces.model.DataModel class which provides apis like getWrappedObject() and setWrappedObject() which can be used to add/remove table rows.
  • Conversion: this happens in the "apply request values" phase where the string values submitted as part of form is converted to appropriate objects.
  • Conversion:
  • <meta http-equiv="Refresh" content= "0; URL=index.faces"/>

Friday, February 24, 2006

Setting data members in a class

How many ways are there to set data members of a class? One way is to have the class provide setter apis. Second way is that the constructor
of the class lets client pass the values as arguments.