Thursday, November 8, 2007

Explore JAR files' countless possibilities

All Java developers know that JAR files are just ZIP files that contain the tree of Java classes. However, not everyone (including experienced developers) knows about the additional benefits you can get from this file format. In this article, I briefly review the JAR file format and describe the possibilities that you can enable by using it.

The ABCs of JAR files

A JAR file is based on the popular binary ZIP file format and is used for aggregating many files into one. It can also contain an optional directory called META-INF located in the root of file contents.

There are two ways that you can create JAR files: by the command-line tool jar or programmatically by using the java.util.jar API in the Java application. JAR files contain Java classes and/or resources that can be run, used, and loaded by class loaders—if the JAR files are included into the Java classpath in order to be visible for JVM.

In many cases, JAR files are not just simple archives of Java classes files and/or resources; they are used as building blocks for applications and extensions. The META-INF directory (if it exists) is used to store package and extension configuration data, including security, versioning, extension, and services.

The magic of the META-INF directory

The following files and directory in the META-INF directory are recognized and interpreted by the Java 2 Platform to configure applications, extensions, class loaders, and services:

  • MANIFEST.MF: The manifest file that is used to define extension and package-related data.
  • INDEX.LIST: This file is generated by the new "-i" option of the JAR tool, which contains location information for packages defined in an application or extension. It is part of the JarIndex implementation and used by class loaders to speed up the class loading process.
  • x.SF: The signature file for the JAR file. 'x' stands for the base file name.
  • x.DSA: The signature block file associated with the signature file with the same base file name. This file stores the digital signature of the corresponding signature file.
  • services/: This directory stores all the service provider configuration files.

Let's go through each possible component.

Manifest file

The manifest file consists of "AttributeName: Value" pairs separated by a newline split into two sections: main and individual. The sections are divided by an additional newline symbol.

  • Main: This section contains security and configuration information about the JAR file itself, as well as the application or extension that this JAR file is a part of. It also defines main attributes that apply to each individual manifest entry. No attribute in this section can have its name equal to "Name." This section is terminated by an empty line.
  • Individual: This section defines various attributes for packages or files contained in this JAR file. Not all files in the JAR file need to be listed in the manifest as entries, but all files that are to be signed must be listed. The manifest file itself must not be listed. Each section must start with an attribute with the name as "Name," and the value must be a relative path to the file or an absolute URL referencing data outside the archive. (I discuss JAR signing later in the article.)

The following are the most important attributes of the manifest file:

  • Manifest-Version: Defines the manifest file version. The value is a legitimate version number as described in the above spec.
  • Created-By: Defines the version and the vendor of the Java implementation on top of which this manifest file is generated. This attribute is generated by the JAR tool.
  • Signature-Version: Defines the signature version of the JAR file. The value should be a valid version number string.
  • Class-Path: The value of this attribute specifies the relative URLs of the extensions or libraries that this application or extension needs. URLs are separated by one or more spaces. The application or extension class loader uses the value of this attribute to construct its internal search path.
  • Main-Class: This is used for stand-alone applications. The value of this attribute defines the relative path of the main application class, which the launcher will load at startup time. The value must not have the .class extension appended to the class name. If you have specified this attribute, the JAR file becomes executable, and an application will be automatically launched by the command java -jar x.jar.
  • Sealed: This attribute defines whether this JAR file is sealed. The value can be either true or false and case is ignored. When the JAR file is sealed, an optional package can enforce consistency within a particular version. A package sealed within a JAR specifies that all classes defined in that package must originate from the same JAR; otherwise, a SecurityException is thrown. For example, this code:
Name: javax/servlet/internal/

Sealed: true

specifies that the javax.servlet.internal package is sealed and that all classes in that package must be loaded from the same JAR file. To find out about optional packages, look at the extension mechanism.

Signed JAR file

Any JAR file can be signed by using the command line jarsigner tool or directly through the API. By signing the file, you can ensure that nobody has changed the contents of a JAR and that you are using the JAR file from a well-known producer. Every file entry, including non-signature related files in the META-INF directory, will be signed if the JAR file is signed by the jarsigner tool. The signature-related files are:


Each signer is represented by a signature file with extension .SF. The major part of the file is similar to the manifest file. It consists of a main section, which includes information supplied by the signer but not specific to any particular JAR file entry. The main section entry, x-Digest-Manifest-Main-Attributes (where x is a digest algorithm), contains the digest value for the main attributes of the manifest.

To validate a file, a digest value in the signature file is compared against a digest calculated against the corresponding entry in the manifest file. Then, a digest value in the manifest file is compared against a digest calculated against the actual data referenced in the "Name:" attribute, which specifies either a relative file path or URL.

For example, this is a manifest file for a signed JAR:

Manifest-Version: 1.0

Created-By: 1.3 (Sun Microsystems, Inc)

Name: common/class1.class

MD5-Digest: (base64 representation of MD5 digest)

Name: common/class2.class

MD5-Digest: (base64 representation of MD5 digest)

SHA-Digest: (base64 representation of SHA digest)

This is the corresponding signature:

Signature-Version: 1.0

MD5-Digest-Manifest-Main-Attributes: (base64 representation of MD5 digest)

Name: common/class1.class

MD5-Digest: (base64 representation of MD5 digest)

Name: common/class2.class

MD5-Digest: (base64 representation of MD5 digest)

A digital signature is a signed version of the .SF signature file. These are binary files that are not intended to be interpreted by humans. Digital signature files have the same filenames as the .SF files but different extensions. The extension varies depending on the type of digital signature and is generally either RSA or DSA.

JAR Index

JAR Index (often referred to as the JarIndex mechanism) was introduced to optimize the class searching process of class loaders for network applications, especially applets. The JarIndex mechanism collects the contents of all the JAR files defined in an applet and stores the information in an index file in the first JAR file on the applet's class path. After the first JAR file is downloaded, the applet class loader will use the collected content information for efficient downloading of JAR files.

The existing JAR tool is enhanced to be able to examine a list of JAR files and generate directory information as to which classes and resources reside in which JAR file. This directory information is stored in a simple text file named INDEX.LIST in the META-INF directory of the root JAR file. When the classloader loads the root JAR file, it reads the INDEX.LIST file and uses it to construct a hash table of mappings from file and package names to lists of JAR file names. In order to find a class or a resource, the class loader queries the hashtable to find the proper JAR file and then downloads it if necessary.

Service providing

Files in the META-INF/services directory are service provider configuration files. A service is a well-known set of interfaces and (usually abstract) classes. A service provider is a specific implementation of a service. The classes in a provider typically implement the interfaces and inherit the classes defined in the service itself.

A service provider identifies itself by placing a provider-configuration file in the resource directory META-INF/services. The file's name should consist of the fully-qualified name of the abstract service class.

Using the features

Now that you see what you can do with the features of the JAR files, it's up to you to put them to practical and creative uses in your development work. If you have used JAR files in some interesting ways, please share your experiences in the article discussion.

10 ways to make meetings more effective

“That meeting wasted my time.”How often have you made this statement? Like you, I’ve attended many unproductive meetings, but a recent one topped them all. I had been talking about my consulting and training work with an employee of a company in central New Jersey. Things had gotten to the point that, after receiving information about me, the person suggested that I come to his New Jersey office for a meeting he would set up that would include him and his boss, the director of a training program for new professional hires.

The day of the meeting came, and I made the two-hour drive to the New Jersey office. I met my contact, who brought me to a meeting room with two of his co-workers and his boss. Following our introductions, the boss asked me about the work I do, and I described it. After hearing it, the boss said, “I’m sorry, but that work isn’t in line with what we had in mind.”

What went through my mind at that moment is probably unprintable, but you get the idea. Of course, the trip proved to be a waste of time for me. However, maybe some good did come of it, because ironically, thinking back about it gave me the idea for this article.

The following tips, which apply both to attendees and the chair of the meeting, will help minimize the chances that you’ll be similarly aggravated.

#1: Determine whether the meeting really is necessary

Does the meeting really need to occur? Do multiple people really need to interact with each other? Reducing the number of attendees saves time for everyone, both those in the meeting (because it probably will end sooner) and for those not attending (because they can do other things).

If the meeting involves a review of documents, status reports, or other material, sending them to attendees prior to the meeting saves time and might even make the meeting unnecessary. Consider my example of the New Jersey meeting: I wonder whether the boss had even reviewed my materials beforehand. Had she done so, or had she spoken to me by telephone, it would have saved time for everyone.

Even if you determine that a meeting is really necessary, does it have to be in person? Consider a telephone or video conference call, which can save time, money, and energy (and which is an option I should have considered for my New Jersey meeting).

#2: Be punctual

Have you ever been on time for a meeting and found that only about three-fourths of the attendees were present? Did the meeting leader say, “Well, let’s wait a few minutes for more people to arrive”? Think about the message that action sends. You, the person who showed up on time, are being penalized for doing so. The people who are late, conversely, are being told that their lateness has no consequences. How likely is it that you will be punctual to the next meeting this leader holds?

I’ve heard of companies that remove all extra chairs from the room once the meeting starts, forcing latecomers to stand. While that technique may be extreme, it does reflect the idea that peoples’ time should be respected.

In the same way, if you’re going to be late, try to let the meeting chair know in advance. Simply showing up late might send a message to the other attendees that to you, the meeting is unimportant.

If you’re the chair, try to end the meeting on time. Attendees have other commitments, and keeping them late is unfair to them and to the others with whom they have commitments. A friend blogged about how she hinted about the late running of a meeting, which was supposed to end at noon: Her stomach growled audibly at 12:05.

#3: Be wary of recapping for latecomers

On a related note, be careful about recapping a meeting for latecomers. By doing so, you are in effect starting the meeting over.

#4: Be prepared

Did you receive background material prior to the meeting? Reviewing it and being prepared with comments saves time for everyone. You might even spot something that could make the meeting unnecessary, as in the case of my New Jersey meeting. If you have questions about the material, consider e-mailing them to the author or to the other attendees in advance, so they have time to think about what you’ve asked.

#5: Have an objective

Author and consultant Stephen Covey counsels readers and clients to “Begin with the end in mind.” When planning a meeting, therefore, ask yourself “What do I want to see as a result of this meeting?” Put another way, ask yourself (as a famous politician and U.S. president did), whether, at the end of the meeting, you and the attendees will be better off than you were at the beginning.

If you have no objective and no purpose, why meet at all?

#6: Publicize the agenda

Having and distributing an agenda prior to a meeting alerts attendees to the nature of that meeting. Attendees who believe a particular item should be added or removed have an opportunity to discuss that issue with the meeting chair.

#7: Be clear about responsibilities

In your agenda and in conversations beforehand, be clear about your expectations for the attendees. Regarding a particular topic, are you looking for a short update, a discussion, or a formal presentation? Being clear about expectations leads to efficiency and avoids embarrassment.

#8: Address important things first

Dr. Covey uses a demonstration involving sand and a collection of medium-size and large rocks. He challenges audience members to place all of them into a pail, so that there’s no overflowing of sand and the rocks all stay below the top of the pail. After many people fail, Dr. Covey shows them how to do it: He puts in the large rocks, then the smaller rocks, then pours in the sand. Those who fail do so because they reverse this sequence.

In your meetings, as in other aspects of your life and work, try to address the most important issues first. Get them out of the way, so that if you do run out of time, all you have left are the less important things.

#9: Avoid being distracted by side issues

It’s easy, during a meeting, to be distracted by side issues. If that happens, you risk losing control of your agenda and the meeting itself. Is the issue one that really needs to be addressed right now? Does it need to be resolved to continue the meeting? If not, consider “parking” it. Section off part of a flipchart page or whiteboard, write the issue inside, then continue the meeting. Afterward, document the issue, as well as any others that have similarly been parked.

If the issue really does need to be addressed immediately, you have a difficult decision to make. Among your current attendees, do you have the necessary people — and only those people needed to resolve the issue? If so, and this issue is important, you may have to take time to address it with the other attendees. If you lack the necessary people, you might have to defer the issue. In that case, try to proceed with other agenda items you can resolve.

#10: Document your meeting

Within a day or two after the meeting, distribute minutes so people have a record of it. Make sure that the minutes list the specific people assigned to specific tasks. Without minutes of a meeting, questions will arise as to who said what and who committed to what. Follow-up actions from the meeting might happen more slowly, if they happen at all.

Note: This information is also available as a PDF download.

Wednesday, November 7, 2007

Mohabatein In An IT Company

Ek Trainee tha anjana sa..........

coding karne se woh darta tha........

Copy paste karke, idhar udhar se..............
pooch ke coding kiya karta tha..............

Choree choree........ chupke chupke..........
discussions mein soya karta tha...

Jab delivery honee hotee thee
raat raat bhar jagta tha...

Kuch aata nahee tha usko............
jane kaise deliver karta tha..............

Jab bhee milta tha kisee doosre developer se, unse poocha karta tha...

Coding kaisee hotee hai,..................
yeh coding kaisee hotee hai .............?

Aur voh developers
bas yahee kah paate the.....

"Ankhe khulee ho ya ho band
deedar code ka hota hai...

kaise kahoo mai o yaro yeh code
kaise hota hai.....

tururururururururu ru ru ru ru ru...."

Facts about orkut...

This is the mastermind behind Orkut community.

Some facts about Orkut:

1) Orkut Buyukkokten(the creator of Orkut) gets $12 when every person registers to this website.

2) He also gets $10 when you add somebody as a friend.

3) He gets $8 when your friend’s friend adds you as a friend & gets $6 if anybody adds you as a friend in the resulting chain.

4) He gets $5 when you scrap somebody & $4 when somebody scraps you.

5) He also gets $200 for each photograph you upload on Orkut.

6) He gets $2.5 when you add your friend in the crush-list or in the hot-list.

7) He gets $2 when you become somebody’s fan.

8) He gets $1.5 when somebody else becomes your fan.

9) He even gets $1 every time you logout of Orkut.

10) He gets $0.5 every time you just change your profile-photograph.

11) He also gets $0.5 every time you read your friend’s scrap-book & $0.5 every time you view your friend’s friend-list.

12) Many Global Financial Consultants think this person might become the richest-person in the world by the end of 2009.

13) Finally, this is the best fact. This person has 13 assistants to monitor his scrapbook & 8 assistants to monitor his friends-list. He gets around 20,000 friend-requests a day & about 85,000 scraps a day.

MPs of INDIA.... .VERY interesting fact

Dear All,
Read this.. This is a FACT.

Salary & Govt. Concessions for a Member of Parliament (MP)

Monthly Salary : 12,000
Expense for Constitution per month : 10,000 Office expenditure per month : 14,000

Traveling concession (Rs. 8 per km) : 48,000 (For a visit to Delhi & return: 6000 km)

Daily BETA during parliament meets : 500

Charge for 1 class (A/C) in train : Free (For any number of times) (All over India)

Charge for Business Class in flights : Free for 40 trips / year (With wife or P.A.)

Rent for MP hostel at Delhi : Free

Electricity costs at home : Free up to 50,000 units

Local phone call charge : Free up to 1,70,000 calls.

TOTAL expense for a MP per year : 32,00,000

TOTAL expense for 5 years : 1,60,00,000

For 534 MPs, the expense for 5 years : 8,54,40,00,000 (nearly 855 cores) And they are elected by THE PEOPLE OF INDIA , by the largest democratic process in the world, not intruded into the parliament on their own or by any qualification.
This is how all our tax money is been swallowed and price hike on our regular commodities.......
Think of the great democracy we have.............

Never Marry Software Family

Never marry a Testing girl since she always doubts U .

Never marry a DATABASE girl since she always wan! ts her husband to be a UNIQUE key .

Never marry a C girl because she always have a tendency to BREAK ! the things and EXIT from house.

Never marry a C++ girl as u may encounter some problems in INHERITANCE.

Never marry a JAVA girl since she always throws EXCEPTIONS.

Never marry a VB girl since she has divorce FORM with her always.

Never marry a UNIX girl ,she always dump u with a core.

Never marry a PASCAL girl ,she always scolds u as rascal.

Never marry a COBOL girl since she may be very good in DIVISION of families.

Never marry a NETWORK girl since she may be very good in shooting troubles .

Better marry a girl not belonging to SOFTWARE FAMILY

How to kill a lion By Software Companies...

How to kill a lion By Software Companies...

Cognizant Method:

hire a lion... ask him to stay for late nights but give him no work to do.
give him gobi 65 to eat again and again.
hire 100 more lions but do not increase the space to sit give them same gobi 65 to eat hire 200 more....... and more .......

TCS method:

hire a lion
give him hell a lot of work and pay him government salary lion dies of hunger and frustration

Kanbay Method:

Hire a Cat; give him a salary of a Lion...
Give him work of 3 Lions
Tell him to work late and even on weekends...
No time for food and family, automatically die

Infy method:

hire a lion and ask him to meow like a cat ..
he will die eventually of frustration...

IBM's metbod:

hire a lion, give him a pink slip in an hour ...
he dies of unemployment...

Syntel Method:-

Hire a Cat ...
assure him that he will eventually become a Lion once he reaches onsite and make sure that he never reaches onsite.
Cat dies in hope of becoming a Lion....

MBT method:

hire the lion, make him take 14 tests and tell him that if he doesn't score 60% he will lose the job.
lion dies of the strain?

i-Flex method:

hire a lion???.oops cow, tell him he is a lion, send him in African safari for implementing flexcube in god forbidden territories, tell him if he comes alive he will get band movement (promotion) holy cow dies in fear of the real lion

COSL Method:

hire a lion .
tell him to merge with Goats (polaris) and reduce his allowance...
lion dies from fear that tommorrow he might become a goat....

Polaris Method :

hire ..sorry....purchase a lion(COSL) ..
change his timings...(instead of 9 AM ...change it to 8:30 AM ) cut down his allowance (coupons etc) lion dies from fear of becoming CAT.....

Patni method:

hire a lion, give him a salary of a cat...
the lion dies before joining....

Wipro Method:
Hire a Lion,
give him a mail Id.
he will die recieving stupid mails all day........!!!!

In Last But not the least

Accenture Method:

Hire a lion....
Send him to chennai
Ask him to stay on bench for a long time
Ask him to eat idli,Dosa and Vada
No hindi speaking ppl... No good food
No water..and specially No Beautiful girls
And say him "Go Ahead be a Tiger".
Lion dies in confusion he is Tiger or lion......

Control users’ temporary Internet files and browser history using Windows Server 2003 Group Policy

If monitoring software is too costly for your company’s budget, you may want to check out a solution that comes with Windows Server 2003 that will send you users’ Internet browsing information. Windows Server 2003 caches a user’s browser history when they use Internet Explorer. This makes it easier for users to find the site again, and it helps administrators monitor and track Internet activity and keep a better eye on equipment usage. Here’s what happens if you enable these settings.

You can set the location of the user browser history — and prevent users from deleting it — using Group Policy. Group Policy is also where you control temporary Internet files and cookies. To configure these settings, follow these steps:

1. Open the Group Policy Editor.
2. Select the User Configuration node.
3. Click Administrative Template.
4. Click Windows Components.
5. Click Internet Explorer.

With the Internet Explorer node selected, the Details pane is flooded with controls for Internet Explorer. About halfway down the list, you will see these three settings: Disable Changing Temporary Internet Files And Settings, Turn Off Delete Browsing History Functionality, and Disable Configuring History.

* Enabling the Disable Changing Temporary Internet Files And Settings setting within Group Policy. This will cause Internet Options in Internet Explorer to gray out the caching settings on the General tab. If you disable the policy, users will be able to modify these values.
* Enabling the Turn Off Delete Browsing History Functionality setting. Internet Explorer 7 disallows users to delete their browsing history. If you disable this policy, users will be able to delete their browsing history.
* Enabling the Disable Configuring History policy. This prevents users from clearing the history manually or changing the number of days after which the browser history will be cleared. This policy will prompt you to supply a value for the number of days that Internet Explorer should keep the history. If you disable this policy, users will be able to change these settings.

Note: In IE 6, browser history and temporary Internet files are separate; in IE 7, they are grouped together under the Browsing History section.

Aligning technology solutions with business needs

Every consultant dreads this conversation, but eventually we all have it. Invariably, it strikes at moments of great pride. You're proudly showing a client the fantastic results of your brilliant work. You’re prepared for adulation, accolades and appreciation, but then the client says something like:

"That’s not what I asked for,"


"That may be what I asked for, but it’s not what I want."


"That won’t help me."

Ouch. That hurts.

Your victory is suddenly a defeat. You may lose a client. You may not get paid.

Like it or not, when this occurs, it is a failure of the consulting process. The bad news is that the excuses that consultants typically use probably don’t apply. The client probably isn’t an idiot. Your deliverable is probably not really what they wanted. And your system probably isn’t going to solve their business problem.

What has happened is a failure to align the technological approach with the business needs of the client. While there are effective ways to handle these situations when they occur, it is far to prevent their occurrence altogether. Ensuring alignment is one of the primary responsibilities of a consultant. Doing it well separates consultants from contractors, and helps to build long-term, valuable client relationships.
What exactly is alignment?

Alignment is about fit; that is, the mutually-supportive relationships between the goals, technologies and processes of a project. Projects that exhibit good alignment are constantly being fine-tuned to ensure that all their facets are internally consistent and mutually reinforcing. Some project features that need to be aligned include the:

* Business problem to be solved or opportunity to be exploited
* Technical solution to the problem
* Budget, schedule and quality constraints on the project
* Goals of the client organization
* Goals of the individual client
* Future applicability of the solution
* Implementation Approach

Of course, achieving alignment requires that all of the above features of a project be:

* Well understood
* Commonly known
* Effectively articulated
* Consistently realigned

All this may seem a daunting challenge, but even this is not enough. David Maister, a well-known expert on the management and delivery of professional services, and co-author of the recent book The Trusted Advisor, points out that, "we as service providers view what we do in rational and technical terms. We underestimate the emotion that clients bring when they hire a provider. The right technical solution might not be the right emotional solution for the client." In other words, even the most well-reasoned and internally consistent solution will not work if a client cannot emotionally support it.
Why try to align a project?

Projects that do not achieve at least a reasonable level of alignment are deemed failures. When the meltdown occurs, it’s unlikely that anyone will realize that misalignment was the root cause of the problem.

The Microsoft Solutions Framework (MSF) identifies six key goals that define project success. These goals provide a solid foundation for understanding the various dimensions of alignment. The goals are:

* Satisfied customers
* Delivery within project constraints
* Delivery to specifications that are based on user requirements
* Release of the product after addressing all known issues
* Enhanced user performance
* Smooth deployment and ongoing maintenance

Failure to meet any one of these goals assures some level of project failure.

The process that the consultant uses must also be properly aligned with the project’s technical and business goals. For example, if the goal of the project is to empower a group of employees, failure to consider their input as part of the project might undermine the effectiveness of the solution. Empowerment can’t be dictatorially foisted on a group of unwilling participants.
Whose job is alignment?

Alignment is one of the key responsibilities of a consultant. Only the client should make the key decisions about their own projects. Consultants should not make decisions for the clients, but have the responsibility to help the client make informed choices. You’re the expert. That’s why the client hired you.

Imagine that you hired an architect to design a house. Then imagine that you told that architect that you wanted the house to be three stories high. However, the architect knew that the soil on the lot could not support a house of that size. Would you be upset if the architect allowed construction to proceed without telling you? Would you be upset to be told that she didn't tell you because you never asked? Without the proper information you would be unable to make good decisions.

Clients do not hire us not because of our technical brilliance; they don’t care how brilliant we are. They hire us for our ability to apply that brilliance to their specific problems. Generally, they know their businesses. If they understood how to develop a technical solution to their business problem, they wouldn’t need a consultant.
What are typical sources of misalignment?

The classic Tolstoy novel, Anna Karenina begins with the famous sentence: "Happy families are all alike; every unhappy family is unhappy in its own way." This applies to projects as well: all properly-aligned projects are alike; every misaligned project is misaligned in its own way.

That said, there are some common sources of misalignment. According to Rick Freedman, consultant and author of the recent book The IT Consultant, the two primary hazards of misalignment are:

* Technologists who fail to understand the business environment of a system
* Consultants who start projects with preconceived ideas about the technical approach

To ensure alignment Freedman recommends that consultants “understand that technology is a means, not an end. It’s a tool with one purpose, to help the client achieve the business result that the client is visualizing.”

Maister also finds that many misalignments start right at the beginning of projects. Just like in romantic relationships, “when starting, we are so keen to be harmonious that we don’t talk about the toothpaste issues. The time to clarify expectations is right up front.”
How do you ensure alignment?

Misalignment usually comes as a surprise because no one thinks to monitor it. Everyone assumes that everyone else shares their vision for the project. Unfortunately, unspoken assumptions are rarely shared by all members of a project team.

Misalignment does not occur at those unfortunate moments when a client complains. That’s just the time at which the recognition occurs. The misalignment accumulates in the project over time. The sooner it is recognized, the smaller the difficulty is likely to be.

Freedman points out, “alignment isn’t an event, it’s a process. You build it into the process at the start and then ensure it with alignment checkpoints that occur throughout the process. You’ve got to manage the engagement holistically, setting and resetting the alignment as you go.”

Building aligned projects requires consistently monitoring whether you have:

* Articulated the business and technical goals of the project
* Gained consensus on the problem to be solved
* Understood the current client situation
* Envisioned the after-project state
* Defined the technical solution
* Ensured that the solution is realistic
* Ensured that the solution can work within all known constraints
* Explored how far into the future the solution will be viable
* Considered whether the method of solving the problem is antithetical to the solution

The mechanics of alignment vary by project. Usually, it entails a combination of conversations and documents. As an IT professional, you will have to judge the appropriate balance based on the complexity of the project, the culture of the organization and your relationship with the client.

The Microsoft Solutions Framework prescribes a number of documents that are useful for ensuring alignment including:

* Project Structure Document
* Vision Document
* Functional Specification
* Master Project Plan and Schedule
* Risk Assessment

Discuss with the client the benefits and costs of using formal documentation, memos or status reports as methods of ensuring alignment. Then use your judgment to guide the level of detail to include in the selected documents.

Building and maintaining business and technology alignment represents one of the most crucial and difficult aspects of consulting. Doing it well will help you create long, productive and profitable client relationships and will help you avoid those surprise conversations that we all dread.

Save time and money, and deliver a better product: Build quality into your IT project from the ground up

Overview: If you think the rigorous processes required to deliver high quality results are too expensive, just think about the long-term costs of delivering poor quality. These costs are often dismissed in the planning stages of a project, but they include redoing a project, losing customers, bad press for the company, and negative career repercussions for the project team. An IT project manager's goal, therefore, should always be to deliver the absolute highest quality result possible within the constraints of a project. This doesn't necessarily mean the absolute highest quality of all time, but the highest quality within the boundaries of the specific project. Explore how you can improve IT project quality to the highest reasonable degree given limited time, resources, and money in this sample chapter from How to Cheat at IT Project Management. Investigate the concept of quality and how quality is built into an IT project via three key components: planning, monitoring, and testing. Look at ways you can build quality into your project without implementing an additional quality management program. Applying these methods consistently with your team will help you do a better job at each step of your IT project and deliver, time after time, higher quality results at lower cost.

download or you can see it from here....

Build a foundation for project success with this definition template

Overview: This comprehensive project definition template will help you develop a clear and effective document to guide participants and stakeholders through the completion of a project.

The project definition clarifies the deliverables, the scope, and the overall approach of a project. It also communicates the project vision to the other stakeholders for their agreement. This revamped version of our project definition template, created by project management expert Tom Mochal, will help ensure that you cover these essential aspects of the definition process. Here are some of the sections the template includes:

* Executive summary
* Project objectives and scope
* Estimated effort/cost/duration
* Project risks, assumptions, organization, and approvals

request me with ur email id.. i'll send it to you with no time...

8 techniques to get your project back on budget

On most projects, actual expenditures are tracked and reconciled on a monthly basis, since most companies only provide accounting reports monthly.

Let’s say you’ve been doing that but that you’ve just realized that you’re trending overbudget. It may not be time to panic, but you don’t want to ignore the situation either. Here are some proactive techniques you can use to get back on budget as quickly as possible.

1. Swap people. If cost containment is more important than the deadline, you may be willing for the work to take a longer time if it ultimately can be completed successfully at a reduced cost. This technique could also be used to replace a contract resource with an employee resource, if the employee would end up costing less for your project.

2. Eliminate or reduce non-labor costs. Just as with people, it may be possible to utilize less costly materials, supplies, or services than what was originally budgeted. For instance,

* You may ask project travelers to stay at a discount hotel chain instead of more upscale accommodations
* You can see if team members can utilize existing upgraded hardware instead of new machines.
* You can substitute less expensive computer-based training, or team mentoring, instead of formal training classes.

3. Implement “zero tolerance” scope change. You must ensure that no unplanned work is added to your project unless formal scope change management is invoked. This doesn’t mean you won’t do the extra work. It means that you need to receive incremental budget for all new work you add to the project.

4. Work unpaid overtime. This option only applies, of course, if your staff doesn’t get paid for overtime. If you’re getting toward the end of the project, you may be able to issue comp-time after the project is completed. However, this is usually not a good solution if you have to apply it for a long time.

5. Use budget contingency (if you have it). Your company may allow a budget contingency to account for the uncertainty and risk associated with your estimate. The contingency is separate from the project budget. If you’re tending over budget because of estimating errors, you can tap the contingency budget.

6. Improve processes. On longer projects, you can look for ways to streamline project processes. Work done more efficiently takes less time and costs less.

7. Renegotiate external contracts. It may be possible to renegotiate license and contract terms. If you use contract labor, you might be able to negotiate a reduced fee. Perhaps your software vendor will take less money for their product. In many cases, the vendor will be willing to trade off one benefit for another. For instance, a contract resource might reduce his rate in exchange for additional work hours. Perhaps a vendor will take less money in exchange for getting paid earlier. If you’re overbudget, especially on a large project, all of the vendors should be reviewed for potential cost savings.

8. Scope back the work. If all else fails and you’re not able to get additional budget relief, you may need to negotiate with the client to remove some of the work from the project. There may be options to complete this project on-budget with less that 100% functionality, and then to execute a follow-up project to complete the remaining requirements. This isn’t the place to start getting back on budget, but it may be your final option if all other techniques fail or are not available.

HR Interview Questions And sample Answers

Tell me about yourself?
I am T.SreeDurga from Rajahmundry.I am a B.Tech holder from S.V.E.C.W in E.C.E and having an aggregate of 74.04%.I did my schooling in Schade girls high school and have 80.0%.I did my Intermediate in Aditya Junior college

5 Proven Steps To Easily Master The Art Of The Interview And Get The Bartending Job Of Your Dreams!

Your mouth is dry, your palms are sweaty, your heart is beating so fast it feels like it is going to pop out of your chest!

Sound familiar?

How much salary do you want?

Salary is not a constraint for a Prestigious Institution like yours. For me, Getting placed in your concern is an important thing.

Where do you see yourself in the next five years?
I want to see myself as a project manager in a reputed organization so that I can guide my team members about the hardships I faced, experiences I gathered, and leadership skills.

Give me an example of your creativity (analytical skillmanaging ability, etc.)

What are your career options right now?

I am looking for a change, which helps me in growing with the organization and permits learning. It should give me the satisfaction of my contribution in the overall growth

Do you prefer to work in a group?
Ya definitely Sir. Basically I am a good team player so that i can able to tackle people in groups easily sir.

If you won $10 million lottery, would you still work?
Yes i would still work Since whats more important to me is I cannot sit idle i would try to focus on the important aspects by investing

What do you think of your boss?
We must feel very comfortable in his presence. He should lead us friendly and support for the growth of company and myself.

Looking back, what would you do differently in your life?
" Looking back, I would never regret to anything in my life. Life has taught me everything to achieve my goals. Every day in my life was a Lesson with lots of learning experience "

Who has inspired you in your life and why?
My source of inspiration is our president DR. APJ Abdul Kalam.His words, " DREAM, DREAM, DREAM!" Inspires me a lot. If we dream about our goal, then it will remain in our entire thoughts.

Can you work under pressure?
I think working under pressure is an art. Every person cannot work under pressure. I can work under tremendous pressure past experience has given me a lot of courage and experience to work under pressure.

How do you feel about working nights and weekends?

I always want to finish off everything within stipulated time hence, if situation demands me to work at nights and weekends I’ll never mind it as weekends and I’ll work.

How do you define success and how do you measure up to your own definition?
In my opinion I feel that success is not some thing that can be achieved by putting few efforts.

How would you rate your communication skills and what have you done to improve them?
I have pretty good communication skills. I constantly improve it speaking and listening, also every day I add more words to my vocabulary.

Why did you decide to enter the field of Computer Science? OR What motivated you to seek a computer science degree?
Well, I have chosen this field because I am very much interested in computers, writing programs, developing software etc.

What have you read lately, and what are you reading now?

I have read " A House for Mr. Biswas (1962) Author: V.S. Naipaul " recently, I am currently reading " A Passage to India (1924) Author: E.M. Forster "

Do you plan to continue your education?
I have read " A House for Mr. Biswas (1962) Author: V.S. Naipaul " recently, I am currently reading " A Passage to India (1924) !

Are you a person who likes to "try new things," or "stay with regular routines"? Give an example.
These days man has become very enthusiastic to discover new things and he can’t keep with old things went.

Tell us about your experience with online searching.
Online searching is a very useful tool. It saves a lot of time and energy. And also, it is very convenient as sitting at one place we can

What experience have you had using the Internet?
Internet has been a part & parcel of my daily life...I have used Internet to buy and sell products and to find information about anything

What do you see as the future of the Internet as a reference tool?
Yes, I agree that Internet can be referred to be a reference tool in future instead i would say that its already considered to be a part of......

What are your hobbies?
Well I don’t have any particular hobby as such, playing games and listening to music is how I mostly spend my time at home.

What motivates you? ALSO have you used these motivators with others
Career growth, Opportunity to learn more and a competitive environment motivate me.

What do you expect from Professionals like us?

Encouragement, help if needed (as we are new to the company), team spirit.

Why do you think more students are going into public services than technical services?

Well i don’t think nowadays people are opting for public services however it’s the candidate opinion to opt whichever field he/she wants to go into.

Can you install software on computers and perform basic maintenance on them?
Yes I can very well install soft wares but i should know a little about it before installing it so that i can learn about it more detail later.

Customers frequently create a great deal of pressure. What has been your experience in this area?
As I have worked as a Tech Support Agent in one of the big MNC’s, (We support all countries in the world).

What is leadership?
Well leading others, encouraging inspiring, improving what not everything

Describe your ideal company, location and job.
One more point I would like to mention here is never curse your prior company. Never belittle it.

What would you say to your boss if he’s crazy about an idea, but you think it stinks?

Well i would try to be very friendly and maintain a good rapport with him first!

Where could you use some improvement?
If you are good at technical skills and do lack some communication skills which he could find it anyway in your interview,

Why did you decide to apply for this position?
This is one of those questions where we can score good points. At the outset we can put the company in a good note and it should be brief.

Tell me about your family?

One point to note here is, his is in no way interested in your family and your selection is no way related to your family background

Tell us about your subject background?

Here initially you can mention about your technical background. Do specify him out of your subject, which are the areas you have performed well

What are the personal characteristics and qualities that you would bring to this position that would be particularly helpful in fulfilling the responsibilities of this position?
This is one of those questions where you can speak of yourself and make a mark in his mind.

What would you say there is about you that has accounted for your fine progress to date?
The answer could be on these lines: Its my determination and smart work in the past few weeks on aptitude and group discussions that I got through them and I am here present over here. My consistent work has provided me with progressive

How much salary you are expecting?
You should know the market value for the job your applying for .Ask someone already working in the same job or experienced people before hand as to what can you expect.If suppose the market stands as 2.4.Never give an exact figure. Give them a range (you may end up getting what u asked rather than a higher amount sometimes).

Some people have the ability to "step into another's shoes." When has this skill been required of you?
I would define it as taking responsibility. So whenever my help is needed i will surely take responsibility and do it perfectly.

Tell us about strengths & weaknesses?

My Confidence in doing things

My knowledge in some domains

My hardworking nature

What is your philosophy of reference?
Reference as I believe is a very important tool for getting jobs!The reference gives an opportunity for people to get a job, for studies, etc. Reference is stated to be necessary for going into any field be it into top mnc's, companies, etc....this is

How do you feel about reporting to a younger person (minority, woman, etc)?
No, I don't like reporting to a younger person! But i f the situation demands I don’t mind as I believe the reporting person should not be discriminated if he is younger!!He should be respected in the same way as an older person and if he has

What is your favorite subject?

My favorite subject in University is Linear Algebra and Psychology.I like them since I used to try different aspects and also think in an imaginative way. I attended all the classes with good interest to learn.

How have you improved the nature of your job in the past years of your working? Why should we hire you?

How do you work under pressure?
There is nothing like pressure. It all depends on how we take the situation. If somebody or some environment were forcing me to work under a critical scenario, instead of getting tensed and putting me into pressure I would rather

What can you do for us that someone else can't?

I can work with at most perfection and dedication.

What are the specials in you, that they identified you unique?
I like to be fresh always!! I believe in hard work and teamwork.

Does the Academic performance have any relevance on your career as a software professional?

No but in order to get through the interview stages we need to have good acads. But our attitude and problem solving skills plays major role.

What if I don’t select you for this job?
I will feel sad but it’s your wish. But the only thing I would like to know in spite of all the specified qualifications and a good interview what was below the mark that made you think that I am not eligible.

What is more important to you: the money or the work?
In this fast moving world, many innovations are taking place. Because of all inventions, we are saying that our country is in such a position like that. Eventhough INDIA have loan over other countries, it is shining because of the inventions. INDIA is giving rice to all other countries, which is very important.

please give ur valuable comments on this.. or if you find anything to add please reply...
thanx in advance

Tuesday, November 6, 2007

Build powerful Web applications via the Yahoo Developer Network

The community aspect of the Internet has changed the way we work. Developers can quickly get answers to their questions by way of a Google search, or learn new techniques and technologies via countless Web sites, blogs, and so forth. One site I recently discovered is the Yahoo! Developer Network. While it offers lots of API's for utilizing Yahoo! features, it also includes plenty of generic Web development resources.

What is it?

An initial perusal of the site can be a bit overwhelming, but it offers a variety of cool stuff for Web developers. Yahoo! describes the purpose of the site as helping software developers integrate Web sites and applications with Yahoo! using standard technologies such as XML and RSS.

YUI Library

The Yahoo! Developer Network offers tools and sample code for working with Yahoo! applications like Yahoo! Finance, Maps, and Messenger, as well as Flickr and HotJobs. The tools include RSS feeds and API's for utilizing application services, but I want to concentrate on the Yahoo! User Interface (YUI) Library.

Yahoo! describes the YUI Library as a set of utilities and controls, written in JavaScript, for building richly interactive Web applications using techniques such as DOM scripting, DHTML, and AJAX. It provides a set of components for adding specific functionality to a Web application. The components are available as open source via a BSD license.

The components are available in one download, which is comprised of one compressed file. You can extract it to install the library; it includes documentation, sample code, and the source code for each component. Let's take a closer look at one of the components to get a feel for what is available.


Providing a calendar is a common requirement for Web applications. The calendar component provides a powerful solution to such requirements. It is very flexible, allowing it to be configured to meet just about any scenario. The following resources of the YUI Library are necessary to use the calendar:

  • The Yahoo global object is available in the yahoo.js file in the build/yahoo directory of your YUI Library installation. It provides a single global namespace within which all YUI Library code resides. It must be included on every page that utilizes the YUI Library, and it must appear before any of the other YUI components.
  • The Event utility (event.js file) includes code to handle events. It is located in the build/event directory of your YUI Library installation.
  • The DOM Collection (dom.js file) provides code for working with the HTML DOM. It is located in the build/dom directory. It comprises a family of convenient methods that simplify common DOM-scripting tasks, including element positioning and CSS-style management, while normalizing for cross-browser inconsistencies.
  • The actual calendar code is found in the calendar.js file in the build/calendar directory.
  • The calendar.css style sheet provides visual formatting of the calendar control. It can be found in the build/calendar/assets directory.

All of these files should be included in your Web page to use the calendar control. With them included, an HTML element is created to contain the calendar. For example, the following div element is used:

Next, the calendar control is created. It accepts a minimum of two parameters. The first parameter is the id of the new element that will be created by the calendar control to hold its DOM. The second parameter is the id of the element that will contain the calendar control (our div element). The next example takes advantage of the optional third parameter that specifies a start month/year for the rendered calendar. A fourth optional parameter can be used to specify a selected date on the calendar control.

Finally, the render method of the calendar object is called to render it on the page. Listing A creates a calendar beginning with January 2007.

This is a basic example, but there are plenty of options for working with the calendar contents as well as formatting its display. Listing B extends the previous code to customize the display characteristics of the calendar including the weekdays, months, and so forth.

Using the Calendar control is better if you can work with the values within it. You can use the following line to display the date selected by the user (mouse click) via the Calendar control's getSelectedDates() method in the previous examples.

what's selected?

These examples provide a preview of the basic functionality of the Calendar control. You should refer to the documentation to dig deeper into what it offers.

Design patterns

Another interesting area of the Yahoo! Developer Network is design patterns. While design patterns have been utilized by application developers for years, they are not as common with Web developers. Design patterns provide solutions to common problems and keep developers from reinventing the wheel every time they are faced with common scenarios. The library site includes numerous Web development patterns with sample code that often utilizes YUI Library components.

New tools at your disposal

The Web is overloaded with sample code and related resources to help with your Web development projects, but some resources are better than others. I found a great resource when I stumbled upon the Yahoo! Developer Network. It provides plenty of helpful information for taking advantage of Yahoo!-related resources in Web applications, as well as a great set of Web components, sample code, and much more.

courtesy @TechRepublic

Support rich text with the Yahoo User Interface Library

During a recent project, my team’s task was to redesign a Web page that utilized an ActiveX control as a rich text editor. One goal of the project was to replace the ActiveX control with a more standardized approach. We chose to use the rich text editor available with the Yahoo! User Interface (YUI) Library. This week I examine using the YUI Library’s Rich Text Editor.

YUI! Library

The YUI Library is a set of utilities and controls in JavaScript, as well as CSS templates for building richly interactive Web applications using standard technologies such as DHTML, DOM scripting, and AJAX.

You can download the YUI Library 2.3.1 for free from The download allows you to install the libraries on a Web server. Another option is to use the library files directly from Yahoo! servers. Yahoo! provides an excellent overview of how to use its servers for applications implementing functionality via the YUI Library.

Rich Text Editor

A recent addition to the YUI Library is the Rich Text Editor. It is a user interface control that replaces the standard HTML textarea element. It allows for the rich formatting of text content, including common structural treatments like lists, formatting treatments like bold and italic text, and drag-and-drop inclusion and sizing of images.

A critical feature of the Rich Text Editor is its toolbar, which provides access to various features like text formatting, color choices, and so forth. You may choose which toolbar features to include in an implementation via scripting. In addition, the toolbar is extensible via a plug-in architecture so that advanced implementations can achieve a high degree of customization.

Putting the Rich Text Editor to work

If you want to use the Rich Text Editor, it requires a YUI Library CSS skin to properly render the control. The following YUI Library files (CSS and JavaScript source files) are necessary to use the Rich Text Editor. The following lines reference the files on the previously mentioned Yahoo! servers, but you may use a local installation as well.

Now the cols and rows attributes of the HTML texarea element will be overridden by settings specified in the Rich Text Editor’s script. The name assigned to the HTML textarea element is important, since it will be used in the JavaScript code when establishing the relationship between a textarea element and a Rich Text Editor.

Also, the class assigned to the HTML body element (yui-skin-sam) is used to visually format the Rich Text Editor control. This CSS skin is defined in the CSS file imported into the application (see previous list). The skin should be applied to the parent HTML element of the textarea element. In this case, the HTML body element is used, but it could be any element that contains the textarea.

Once the textarea has been defined along with the proper YUI Library files included in the page, the Rich Text Editor control must be rendered. The rendering is accomplished via JavaScript placed within the page. The script can be used to define various Rich Text Editor options such as the toolbar. As an example, I may use the following JavaScript to format our Rich Text Editor:

This snippet establishes the height and width of the editor while declaring an instance of the Rich Text Editor. Also, it assigns the textarea called textedtior to the Rich Text Editor. The final line in the script actually causes the Rich Text Editor to display when it calls its render method.

When you use the Rich Text Editor control without any specifics about the toolbar, it results in the default behavior of including all toolbar features like text alignment, font face, font size, color, and so forth. You may choose to limit the toolbar options available to users.

The final example uss a Rich Text Editor, but the toolbar options are defined in the JavaScript code to render it. The following options are used:

  • The toolbar options are defined in its own variable. This is later used to instantiate the editor.
  • A title is assigned to the editor via the toolbar’s titlebar property.
  • The collapse property signals whether the user may collapse/hide the toolbar.
  • The buttons property allows you to define the buttons displayed in the toolbar. In this example, buttons are displayed for text formatting as well as selecting colors.

Once the toolbar options are defined, a Rich Text Editor object is instantiated with the toolbar variable passed to it along with the HTML textarea element. The final step is to render the control. A complete list of options is available in the YUI Library API documentation.

It is worth noting that the text is formatted using standard HTML to format the text within the Rich Text Editor, so bold text uses the HTML strong element; the font element is used for font styling, and so forth.

An improved interface

I have been a big fan of the YUI Library since I first discovered it more than a year ago. It allows developers to build powerful Web interfaces using code that has been fully tested for proper functionality. The Rich Text Editor is just one example of the power controls available in the YUI Library.

courtesy @TechRepublic

Windows PowerShell

Blog of Windows PowerShell team. Improving the world one-liner at a time.

CTP: CTP != Beta!

Next week we'll be releasing a Community Technology Preview (CTP) of Windows PowerShell V2.0. I'm going to hold off saying what is in it until next week. The purpose of this email is to set your expectations about the CTP.


The first thing to get into focus is that a CTP is NOT a Beta release. A CTP is a very early drop of our technology with the following goals:

  1. Let the community understand where we are taking the technology
  2. Let the community provide feedback on that direction IN TIME FOR US TO CHANGE BEFORE WE SHIP.

One of the shared frustrations around Betas is that the feedback comes at a time that is difficult to make changes. At the end of the release, you want to minimize the code changes because one out of every X changes you make breaks something else that you won't detect. The way it works is that there is a standard for what bugs will get fixed and that standard gets tighter and tighter as the release forward. Given that reality, a number of us are pursuing a CTP approach which provides the community access to our technology at a time where "good ideas" can be acted upon, "changes in direction" can be considered, class names can be changed, classes can be refactored, features cut/added, etc. Once we go into beta, the changes we can consider are dramatically reduced, by the time we hit RC (Release Candidate) we basically are determining whether bugs will explode computers, kill users or destroy economies of small nations. If not, well …. (It is not that bad but it sometimes it feels like that – we get really hard core about not messing you up by introducing changes that could break things that we can't detect.)

But as Lao Tzu says, things greatest strengths are their greatest weaknesses.

So while the CTP gives you early access to V2:

  1. The functions delivered in CTP WILL CHANGE.
    1. That is the whole point of the CTP. So on the one hand, we want to you grab it, use it, use our APIs, write scripts and a generally bash the heck out of it and let us know what you think. On the other hand, it could all change in the next CTP (or Beta) and you'll have to go back and change everything. So if you can't accept that, don't use the CTP.
      1. Note – we are generally happy with the direction we are going but we already know that there are some changes that probably need to be made.
  2. CTP bits have not gone through the same quality process as BETA bits.
    1. The PowerShell team has a pretty rigorous quality process. Every dev has to successfully run a suite of regression tests before any checkin and then we do > 1million (that number keeps growing) test cases each night. Our nightly builds are always self-host quality. That said, when we get ready for BETA – we kick it in even higher and do extensive self-hosting with a larger audience of users, run long stress tests, hold bug-bashes to find new bugs, etc. There is a LOT of things that we do for BETA that we are not doing for the CTP bits.
    2. We have included a couple of features that are VERY early. Reasonable people could make the case that we should cook these more before making them available. We decided to ship them because we considered important for people to understand where we were going.
  3. Documentation is not complete, edited, reviewed.
    1. You will find errors in our docs. You will find them incomplete. That said, I'm actually pretty surprised by how good they are. Given how fast we've been moving, I had VERY low expectations here but the writers where very aggressive and did a great job under difficult circumstances.

This is a tricky blog – I want to entice the right set of people to grab the CTP, kick the tires and then tell us what things to change because they know that they have a real change of getting their suggestions incorporated. I also want to scare off those people that will be unhappy if they use a feature and it goes away or changes in the next CTP.

To quote Robin Williams from the movie DEAD AGAIN: "Someone is either a smoker (CTP user) or a nonsmoker. There's no in-between. The trick is to find out which one you are, and be that. If you're a nonsmoker, you'll know."

If you read the warnings above and said, "AWESOME!" – you're a CTP user.

If you read the warnings above and had a feeling like there was a squirrel in your shirt – you're not a CTP user.

Figure out which one you are and be it. J

Jeffrey Snover [MSFT]
Windows Management Partner Architect
Visit the Windows PowerShell Team blog at:
Visit the Windows PowerShell ScriptCenter at:


Robotic urban warriors pass DARPA's Grand Challenge

For nearly 50 years, the Defense Advanced Research Projects Agency (DARPA) has funded scientific developments and promoted their adoption by the companies that supply military technology. For the last few years, the agency has been encouraging the development of automated vehicles through a series of Grand Challenges. The first two editions tested the ability of automated vehicles to navigate desert terrain, but this year's version raised the difficulty dramatically by changing the environment: the 2007 version was called the Urban Challenge.

DARPA's description of the obstacles sound a bit like a description of a typical commute to work: "They must obey traffic laws while merging into traffic, navigating traffic circles, negotiating busy intersections and avoiding obstacles." The competition rules, in fact, included a copy of the California Driver's Handbook. Instead of dropping carpoolers off at work, however, the vehicles were expected to run simulated supply missions that had them covering 60 miles in under six hours. As the Challenge's literature notes, "The urban setting adds considerable complexity to the challenge faced by the robotic vehicles, and replicates the environment in which many of today’s battlefield missions are conducted."

Given that no vehicles completed the first desert challenge, it's clear that experience has made a big difference for many of the teams. This time around, three teams finished within the allotted time. Computer science hotspot Carnegie Mellon's Tartan Racing took home $2 million for driving a Chevy Tahoe into first place. The Volkswagon Passat wagon of the Stanford Racing Team, winners of the second Desert Challenge, pocketed $1 million for second, while Virginia Tech's Team Victor Tango drove a Ford Escape Hybrid named Odin into the $500,000 third prize. According to Wired, all three vehicles averaged speeds in the low teens.

All of the vehicles were crammed with radar and laser sensors to detect their surroundings, used high-precision GPS sensors to figure out where they were, and they packed some serious hardware to support their AIs. For example, Stanford's vehicle used 64 lasers to create a 3D map of everything within a 65-meter radius, while using five radar sensors to track up to 32 individual obstacles at ranges of up to 200 meters; Carnegie Mellon's team put 300,000 lines of code into getting their Chevy around the course.

DARPA clearly foresees military uses for these vehicles, which is no surprise, given the military's successful use of unmanned aircraft. The fact that many of the Defense Department's recent casualties have come from bombs targeting manned vehicles has undoubtedly convinced DARPA that it is time to bring automated vehicles down to earth.

This is technology that will also attract an audience within the consumer automotive industry. Lexus is now selling a self-parking car, and many companies are testing sensors that let vehicles follow others closely at high speeds and brake safely when the car in front slows. The interest was also clear from the sponsorship; each team was sponsored by the manufacturer of the car it used, and two of the winners received money from equipment manufacturer Caterpillar.


Why Linux Will Succeed On The Desktop

Former Linux Journal editor Nicholas Petreley argues that the open-source operating system will break through big time on the client side, especially if pre-installs increase and the KDE graphical environment is adopted.

I believe Linux will become the de-facto standard desktop operating system. Though it'll take a while for many users to break free from ties to Windows, there is good reason to believe that this day will come.

Consider that the global community is already beginning to rally behind standard document formats. In addition, as browsers like Firefox gain more market share, users are less tolerant of Internet Explorer-only web sites. However, the transition is slow and will continue to be a slow one. Most people will switch away from Windows only when dollars are on the line.

The Perfect Generic Client

A desktop supports multiple methods of work habits. For example, you can edit a document with a local word processor like Microsoft Word for Windows, or you can use Google Docs. You need Windows to run Word, but any operating system with a good browser will handle Google Docs well. Once you eliminate the problem of migrating to a new document format, the question becomes, "Why am I paying through the nose for a buggy, bloated, insecure and buggy Windows?" Put more simply, take away the force of legacy inertia, and the cheapest, least-problematic desktop becomes the most desirable.

In the long run, Linux makes the perfect generic client. It is the hub of free software development, which makes it the focal point for generic, open computing. As people continue to use Linux as the basis for cell phones, DVRs (such as TiVo and Dish Network), routers, and other dedicated systems, it is becoming ubiquitous on just about every platform but the PC. This only makes it more likely to dominate the PC in the future.

The more Linux becomes the de-facto standard platform for software development of any kind, the more appealing it becomes as the platform for personal computing. Any overlap between appliances and PCs saves duplication of effort. The vast repository of free software available for the asking makes Linux even more appealing as the basis for development.

Many of the duties Linux must perform on a PC it already performs on appliances like cell phones. We may never see the era of $100 network computers, but network computing is advancing, nevertheless, as is evidenced by the increasing reliance on web-based email and the appearance of network applications like Google Docs. We owe thanks to AJAX and Java for the rich client features now available through your PC and/or cell phone browser.

The more we depend on this type of computing, the more invisible operating systems will become. Most people don't know or care what OS runs their cell phone. We may always care more about what we run on our PC, but the distinction between the two will gradually blur. As it does, Linux should be the best choice, because it is already prevalent on so many devices. Linux can't succeed as a generic network computing client, only. People will continue to use their PC as a power workstation, even when it isn't appropriate. It's the nature of computer users to do so. For this reason, Linux needs a compelling desktop experience. It already has Compiz Fusion, but even though 3-D on Linux doesn't require nearly the hardware resources as Vista, many Linux users still refuse to install Compiz or turn it off.

The desktop needs a more substantial advance in thinking. The new KDE, KDE4, looks promising in this regard. The KDE developers seem intent upon bringing something new to the desktop experience that isn't just eye-candy. KDE4, or parts of it, will run on Windows and Mac OS-X, but it will be fully native on Linux, and should benefit Linux more than any other platform.

KDE4, the proliferation of Linux on appliances, the trend toward generic network computing, the fact that Linux is free (both as in freedom and as in "free beer"), and other factors contribute to the inevitable success of Linux on the desktop. But Linux still needs more. It needs windows of opportunity to supplant the legacy systems, and it needs to overcome some important obstacles.

Linux's 'Window' Of Opportunity

Both the successes and failures of Microsoft provide a substantial window of opportunity for Linux to seize a significant desktop market share. It is painful, especially at the enterprise level, to switch desktop operating systems, so any legacy system like Windows will always have a huge advantage. But Microsoft has made so many blunders in recent times that one must credit Microsoft itself for encouraging users to seek an alternative desktop operating system. Windows was already a notoriously insecure operating system, but Microsoft has compounded the problem with the expensive, buggy, incomplete, complex license-burdened, DRM-encumbered, hardware-challenged, frequently updated without your permission Vista.

As noted earlier, people are most likely to switch to a new operating system when dollars are on the line. Microsoft would be wise to continue supporting the "good enough" Windows XP, since any move to force people to upgrade to Vista could create the "dollars on the line" scenario. The risk of adjusting to a new operating system becomes much more palatable when it saves you the cost of upgrading to a desktop you know you won't like.

Perhaps the most significant Microsoft failure was its flubbed attempt to use SCO as a proxy to create fear, uncertainty and doubt about Linux. Those who backed SCO are now eating crow. This makes it far less likely for high-profile analysts to make the same mistake, now that Microsoft is attacking Linux directly by claiming Linux violates its software patents.

Microsoft began a catch-22 strategy when it released Windows 95. On the one hand, it successfully leveraged its unique advantage in building 32-bit Windows applications to eliminate virtually all competition in mainstream desktop applications. The catch is that Microsoft has left itself without friends. For example, if Lotus Smartsuite and WordPerfect Office were still thriving competition for Microsoft Office, it would be all but impossible for Linux to break into the desktop market. Companies would be content to collect their Windows applications revenue. There would be no incentive to support another desktop platform. Unfortunately for Microsoft, this isn't a mistake it can undo easily. Microsoft can't afford to give away a significant portion of its Office market share just to try to regain some loyalty for the Windows platform. Now that the damage is done, companies are more inclined to support platforms where the playing field is level, hence this opportunity for Linux and other desktop operating systems.

But while Microsoft made it nearly impossible for competition to make money on mainstream desktop applications for Windows, Linux does not necessarily restore that opportunity. The best mainstream applications for Linux are free, open-source applications. While many companies are beginning to recognize the superiority of free software, most still haven't figure out how to make money on it - at least, they realize they can't make money the same way they did in the old market.

Another problem with these Microsoft-driven windows of opportunity is that they simply make it easier for any alternative operating system to gain desktop market share, not necessarily Linux. Mac OS-X, can reap the benefits from these opportunities, and probably already has. Linux may have the edge in the long-term, but in the short-term, it's going to take some additional changes for Linux to exploit these opportunities. Linux will have to overcome some significant obstacles.

Obstacle: More Preloaded Linux Systems Are Needed

It is the personal experience of many users of both Windows and Linux that Linux is far easier to install than Windows when Linux recognizes the hardware properly during installation. Obviously, Linux can be a bear to install when it has trouble recognizing hardware, but then so can Windows.

One could argue that Linux installers are doing a better job of recognizing hardware these days. It's irrelevant. The easiest installation is the one you don't have to perform. This is the reason why so many people believe, true or not, that Linux is harder to install than Windows. They have to install Linux. They don't have to install Windows. They get Windows on their PC when they buy it. Mac OS-X has the advantage here. Buy a Mac, and you've got your desktop operating system installed for you.

The way past this obstacle is obvious. Get Linux pre-loaded on PCs and Linux users won't have to deal with installation woes. Ubuntu and Dell partnered up to pre-load Linux. That's a great start, but it's only a start. Linux will need much broader support in pre-loads to be successful on the desktop.

Obstacle: KDE Must Replace GNOME As Linux's Preferred GUI

GNOME is the default graphical desktop environment for Red Hat Linux, Ubuntu, SUSE, and others. GNOME may not be keeping Linux off the desktop, but it is not selling desktop Linux, either. GNOME can't seem to make up its mind if it's for novice users or hard-core hackers. It would be different if GNOME, like KDE, attempted to serve both types of users. Instead, the GNOME approach to being user-friendly is to make it impossible (or all but impossible) to perform anything but the most basic operations. If you really want to do something GNOME doesn't want you to do, you have to get down and dirty and edit the GNOME registry or other configuration files. GNOME developers reason that you can keep users out of trouble and avoid confusing them if you eliminate all but the most simple features. Even Linus Torvalds questioned the wisdom of this design strategy, writing in a mailing-list e-mail two years ago: "If you think your [GNOME] users are idiots, only idiots will use it."

One could argue that GNOME gets it right because the most popular Linux distributions use it by default. That might hold water if Linux desktop market share was growing rapidly thanks to these distributions. The pitiful desktop market share of Linux would argue otherwise. These distributions are popular, but they're popular among those who are already familiar with Linux, the segment to which GNOME is more likely to appeal. GNOME is attractive to some seasoned Linux users because it one of the few complete desktop environments that is more lightweight than KDE, which makes GNOME more appropriate for use on servers. The limitations in GNOME are also unobtrusive to someone who knows how to get around them; someone who is unafraid of the GNOME registry or the command-line.

What must be done to remove this obstacle? Red Hat endorsed GNOME due to licensing issues which arguably were resolved long ago. SUSE favors GNOME because one of the early GNOME developers practically runs the company. Heaven only knows why Ubuntu defaults to GNOME (though you can download and install Kubuntu, which defaults to KDE). But if these distributions want to contribute to the expansion of Linux on the desktop, they need to adopt and promote KDE as the default desktop and/or pressure the GNOME developers to abandon their brain-dead development philosophy. This is especially true of Ubuntu, which leads the way in getting Linux pre-installed on popular brands like Dell. Linux desktop market share will probably grow regardless, but it will grow faster with the more popular distributions backing a sane graphical desktop.

Open Document Formats Will Drive Adoption

Linux has a dual-legacy to unseat. Windows and Microsoft Office are practically synonymous, and there is no Microsoft Office or fully compatible suite for Linux. Either users must make the switch to open document formats, or Linux applications must support perfect imports of Microsoft Office files. The ideal solution would be to migrate to open formats, but the market will decide.

This obstacle isn't nearly as insurmountable as it seems. One should recall that WordPerfect once virtually owned the word processing market, yet people still found a way to migrate to Microsoft Office. Microsoft will make any transition from Microsoft Office a difficult one, but it is still possible. The appeal of open document formats is undeniable. It has to make more sense than the nearly one-way trip people took to Microsoft Office. A move to open document formats is a move toward guaranteed compatibility in the future.

The Bottom Line

Despite the obstacles involved, there is good reason to be optimistic about Linux on the desktop. This author has been using desktop Linux almost exclusively since the mid-90s, although it required a lot more computer savvy back then than it does now.

There is one additional factor that cannot be overstated. To anyone who truly knows what free software means, they know that "free" as in liberty is the greatest strength of Linux. However, one cannot deny the power of "free" as in "free beer." Microsoft applied this power to make Internet Explorer the most popular browser in the world. Netscape faded away because the company was unable to compete against free as in beer. Firefox has only been able to fight back because it, too, is free as in beer. Of the three top competitors on the desktop, Windows, Mac OS-X, and Linux, only one of them is free as in beer. That will go along way toward making it the de-facto standard on the desktop.