Some cool tips on writing good blog entry

Scott Mitchell (founder, 4 guys from rolla) published a post on his blog about writing good blogs. I read the post and follow the suggested links. After reading through a chain of links, I read lots of material on good blogging. Below is the summary of what I read:

How To Achieve Ultimate Blog Success In One Easy Step(http://www.codinghorror.com/blog/archives/000983.html)

My theory is that lead generation derives from Google rank and that the best way to increase Google rank is to be like a professional fighter: neither jabs nor haymakers are enough. You must be always jabbing and you must regularly throw haymakers. Blog continuously to keep your hit-rate and link-traffic high and write longer pieces, containing the high-value words associated with your niche, occasionally.

Fear of Writing (http://www.codinghorror.com/blog/archives/000516.html)

And that’s exactly why people who are afraid they can’t write should be blogging. It’s like exercise. No matter how out of shape you are, if you exercise a few times a week, you’ll inevitably get fitter. And if you write a small blog entry a few times every week, you’re bound to become a better writer. If you’re not writing because you’re intimidated by writing, well, you’re likely to stay that way forever.

Users don’t care about you (http://www.codinghorror.com/blog/archives/000536.html)

Unless what you’re writing ..

  • solves their problem
  • provides useful information
  • entertains them
  • makes them feel like they rule

It’s irrational to expect users to care about it. Every time you write, ask yourself, “so what?” If you can’t answer that question convincingly, reformulate and try again.

Blogging about Blogging (http://www.codinghorror.com/blog/archives/000297.html)

  • you have to want to write
  • you have to believe you have something to say
  • you have to have an interesting way of saying it
  • you have to be a decent (not great, but decent) writer
  • you have to enable blog comments

Rory explains first three of above point in details in his blog post Why do some blogs succeed?“.

Writing Tips for Non-Writers Who Don’t Want to Work at Writing (http://www.scalzi.com/whatever/004023.html)

0. Speak what you write: If you can’t speak it naturally, rewrite it. Simple.
1. Punctuate, damn you:

2. With sentences, shorter is better than longer:

3. Learn to friggin’ spell: This is particularly the case with basic spelling errors like using “your” when you’re supposed to be using “you’re” or “its” for “it’s” (or in both cases, vice-versa). For every spelling error you make, your apparent IQ drops by 5 points. For every “there, they’re, their” type of mistake you make, your apparent IQ drops by 10 points.

4. Don’t use words you don’t really know:

5. Grammar matters, but not as much

6. Front-load your point: Now, sometimes people write to find out what their point is; I think that’s fine because I do that myself. But most of the time after I’ve figured out my point, I’ll go back and re-write.

7. Try to write well every single time you write: There really is no excuse for writing poorly in one’s blog. You’ll look stupid for the whole world to see, and it will be archived for as long as humanity remembers how to produce electricity.

8. Read people who write well: Don’t just read for entertainment, but also look to see how they do their writing — how they craft sentences, use punctuation, break their prose into paragraphs, and so on.

9. When in doubt, simplify: Ultimately, people write to be understood (excepting Gertrude Stein and Tristan Tzara, who were intentionally being difficult). Most people are, in fact, capable of understanding. Therefore, if you can’t make people understand what you write, most of the time it’s not just because the world is filled with morons, it’s also because you are not being clear. Downshift. People will be happy to know what you’re saying.

10. Speak what you write: If you can’t make your writing understandable to you, you can’t make it understandable to others.

Hints for revising (http://www.testing.com/cgi-bin/blog/2004/11/16)

Read your text aloud. Reading aloud is one way to get some distance, to separate the piece from your memory of writing it.

If a sentence is unclear, split it.

If a paragraph is unclear, split it. Then Write text to head off the problem, then return to adjust the guilty paragraph.

If an idea or procedure is complicated, add an example.

After you change a sentence, leave it aside for a while, then come back and reread at least the whole paragraph that contains it. Then tweak the sentence to make it fit better into its environment.

Can you turn that bullet list into one or more paragraphs? Bullet lists are, on average, easier for writers but harder for readers. They don’t provide transition between two ideas.

HTTP Modules’ Events and Their Order of Firing

Below is the list of Events raised by HttpHandlers. These events are in the sequence of firing.

OnBeginRequest
OnAuthenticateRequest
OnPostAuthenticateRequest
OnAuthorizeRequest
OnPostAuthorizeRequest
OnResolveRequestCache
OnPostResolveRequestCache
OnPostMapRequestHandler
OnAcquireRequestState
OnPostAcquireRequestState
OnPreRequestHandlerExecute
Page_Load Event of the Page
OnPostRequestHandlerExecute
OnReleaseRequestState
OnPostReleaseRequestState
OnUpdateRequestCache
OnPostUpdateRequestCache
OnEndRequest
OnPreSendRequestHeaders

I wrote a http handler to check the sequence of execution of event handlers. Below is the program. Two events in the program are commented because these require integration with the IIS pipeline. I used Visual Web Developer 2008 Express Edition Beta 2 to write this program. So may be express edition does not support integration with IIS. I haven’t checked it yet. Here is the program:

using System;

using System.Data;

using System.Configuration;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Xml.Linq;

/// <summary>

/// Summary description for AddSign

/// </summary>

public class AddSign: IHttpModule

{

public delegate void MyEventHandler(Object s, EventArgs e);

private MyEventHandler _eventHandler = null;

public event MyEventHandler MyEvent

{

add { _eventHandler += value; }

remove { _eventHandler -= value; }

}

public AddSign()

{

//

// TODO: Add constructor logic here

//

}

#region IHttpModule Members

void IHttpModule.Dispose()

{

//throw new NotImplementedException();

}

void IHttpModule.Init(HttpApplication context)

{

//throw new NotImplementedException();

context.EndRequest += new EventHandler(OnEndRequest);

context.AcquireRequestState += new EventHandler(OnAcquireRequestState);

context.AuthenticateRequest += new EventHandler(OnAuthenticateRequest);

context.AuthorizeRequest += new EventHandler(OnAuthorizeRequest);

context.BeginRequest += new EventHandler(OnBeginRequest);

context.Disposed += new EventHandler(OnDisposed);

context.Error += new EventHandler(OnError);

//context.LogRequest += new EventHandler(OnLogRequest); //This operation requires IIS integrated pipeline mode.

//context.MapRequestHandler += new EventHandler(OnMapRequestHandler); //This operation requires IIS integrated pipeline mode.

context.PostAcquireRequestState += new EventHandler(OnPostAcquireRequestState);

context.PostAuthenticateRequest += new EventHandler(OnPostAuthenticateRequest);

context.PostAuthorizeRequest += new EventHandler(OnPostAuthorizeRequest);

context.PostMapRequestHandler += new EventHandler(OnPostMapRequestHandler);

context.PostReleaseRequestState += new EventHandler(OnPostReleaseRequestState);

context.PostRequestHandlerExecute += new EventHandler(OnPostRequestHandlerExecute);

context.PostResolveRequestCache += new EventHandler(OnPostResolveRequestCache);

context.PostUpdateRequestCache += new EventHandler(OnPostUpdateRequestCache);

context.PreRequestHandlerExecute += new EventHandler(OnPreRequestHandlerExecute);

context.PreSendRequestContent += new EventHandler(OnPreSendRequestContent);

context.PreSendRequestHeaders += new EventHandler(OnPreSendRequestHeaders);

context.ReleaseRequestState += new EventHandler(OnReleaseRequestState);

context.ResolveRequestCache += new EventHandler(OnResolveRequestCache);

context.UpdateRequestCache += new EventHandler(OnUpdateRequestCache);

}

#endregion

public void OnEndRequest(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnEndRequest<br />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnAcquireRequestState(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnAcquireRequestState”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnAuthenticateRequest(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnAuthenticateRequest”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnAuthorizeRequest(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnAuthorizeRequest”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnBeginRequest(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnBeginRequest”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnDisposed(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnDisposed”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnError(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnError”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

app.Context.Response.Write(“<BR />”);

_eventHandler(this, null);

}

public void OnLogRequest(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnLogRequest”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnMapRequestHandler(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnMapRequestHandler”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnPostAcquireRequestState(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnPostAcquireRequestState”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnPostAuthenticateRequest(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnPostAuthenticateRequest”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnPostAuthorizeRequest(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnPostAuthorizeRequest”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnPostMapRequestHandler(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnPostMapRequestHandler”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnPostReleaseRequestState(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnPostReleaseRequestState”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnPostRequestHandlerExecute(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnPostRequestHandlerExecute”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnPostResolveRequestCache(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnPostResolveRequestCache”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnPostUpdateRequestCache(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnPostUpdateRequestCache”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnPreRequestHandlerExecute(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnPreRequestHandlerExecute”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnPreSendRequestContent(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnPreSendRequestContent”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnPreSendRequestHeaders(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnPreSendRequestHeaders”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnReleaseRequestState(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnReleaseRequestState”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnResolveRequestCache(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnResolveRequestCache”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

public void OnUpdateRequestCache(Object s, EventArgs e)

{

HttpApplication app = s as HttpApplication;

app.Context.Response.Write(“OnUpdateRequestCache”);

app.Context.Response.Write(“<BR />”);

if (_eventHandler != null)

_eventHandler(this, null);

}

}

Script# – Another Flower in .Net Bouquet

Script# is a compiler that compiles C# code into JavaScript. This sounds great for ASP.Net developers who program into C#. Most of the time, C# programmers don’t have good hand in JavaScript.

With the client machine increasing their processing power constantly, the demand for client side scripting is very high. People talk about a new architecture that would obsolete the server side programming model. Web serve will only server HTML pages with JavaScript. If any server side processing (or database connectivity) is required, web services will fill up the gap. Using JSON, JavaScript will now directly interact with a web service from client side. All UI processing, validations etc. will be done on client side.

C# and VB.net folks have to worry about that. Either they have to switch to web services or their job will not be safe. Nikhil Kothari also thinks same (though he has not expressed it anywhere). So he decided to bring C# developers on the client side. Nikhil is currently working on a project called Script#. In his own words:

Script# brings the C# developer experience (programming and tooling) to JavaScript/Ajax world.”

The project is still in development phase but you can try your hands on it. Download the Script# and read Nikhil’s demonstration. You can also watch a video. Nikhil says:

Essentially the Script# compiler is a C# compiler that generates JavaScript instead of IL. A key driving goal of the design is to produce readable JavaScript that you may have authored yourself, and would be ok deploying into real apps.

Links

Introduction to Script#
Download Script#
Download Script# Video
Nikhil Kothari’s Weblog



Technorati : , , , , , , ,

A Recipe For Killing Internet In India

A news published in Times Of India, Oct 17th, 2007 (internet edition)

A Recipe For Killing Internet In India

Standing Committee Goes Against International Norms To Stack Odds Against Net Service Providers, Says Manoj Mitta

There is a clear and present danger to internet in India। If the recommendations of the parliamentary standing committee were to go through, you might as well pull the shutters down on the net in the country, because the committee seeks to raise the liability of internet service providers for any third party content in a manner that it will become difficult to run the service and stay away from jail.

This isn’t an exaggeration. Over 85% of internet deals with third party content। This includes search engines, mail services, messengers, blogs, communication and community sites. If they were to be held responsible for the sites searched, mails sent, blogs filed or scraps on community sites then service providers would be hauled up by the police for acts they are not even faintly responsible for.

Why, then, is the committee proposing this insanity? The answer is simple — the committee has failed to understand the internet। Frankly, there’s no difference between the phone and the postal service and the net — it’s just that one delivers voice or post and the other data. Both deal with third party content which is impossible to verify.

How would a mail service know, for instance, if two friends exchange copyright material? Or, how would a search engine track if someone accesses sites spreading hatred, or worse, promoting terror? It’s all out there — the responsibility of who fetches what should be that of the individual, not the service provider।

Therefore, what the standing committee is seeking to do is something like making a postal service responsible for every mischievous mail it delivers — perhaps by a drug dealer giving details of a consignment or a student sending photocopies of a book and hence infringing on copyright। Or, something like making a phone service, such as MTNL or BSNL, responsible for every bit of dirty talk or criminal conspiracy over its wires.

Perhaps the committee is confusing internet with media like TV or print. In the latter, content is either self-generated or by designated news or TV agencies. The content goes through several layers of vetting and checks. This is not true of internet sites that provide mail service, aggregation of communities, picture sharing, etc।

This is possibly why in its report last month on the Information Technology (Amendment) Bill 2006, the committee headed by Congress MP Nikhil Kumar has called upon the government to abandon the proposal to reduce the liability of service providers or intermediaries in the wake of industry outrage over the 2004 arrest of Baazee।com’s CEO for the auction of a CD containing an infamous student porn MMS.

The bone of contention is Section 79 of the IT Act 2000 which says that no service provider shall be liable for any third party information if he proves that the offence was committed ”without his knowledge or that he had exercised all due diligence” to prevent the commission of such contravention।

Since the existing safeguard failed to save Baazee.com CEO Avnish Bajaj from being subjected to the ignominy of arrest and detention, the government sought to reduce the liability further in its 2006 Bill. The Bill raises the bar for taking action against ISPs by stipulating that they are not liable unless it is proved that they have conspired or abetted in the commission of the unlawful act.

Service providers under no obligation in US, EU
This is really how the law is in both Europe and in the US। To the industry here, the proposed amendment seemed a fair safeguard। But the standing committee, far from endorsing the change, has recommended that the existing Section 79 should be strengthened by casting ”a definite obligation” on the service providers to ensure that the third party information was within the parameters of the law especially because ”it is very difficult to establish conspiracy or abetment” on their part।

The committee also took objection to the Bill’s proposal to relieve the service providers of the burden of demonstrating that they had exercised due diligence to prevent the third parties from misusing online market places and auction sites। ”The committee are of the firm opinion that if explicit provisions about blocking of objectionable material through various means are not codified, expecting self-regulation from the intermediaries, who basically work for commercial gains (sic), will just remain a pipedream,” it said.

For all its efforts to make out a case for increasing the liability of service providers, the committee glossed over the fact that the Bill was in tune with the approach adopted by advanced countries that have given sufficient thought before framing their Internet laws. Take, for instance, the relevant law in the European Union. It says that a service provider storing third party information is liable to criminal action only when he ”by intent is storing illegal information or assisting in illegal activities।”

What is even more contrary to the committee’s report is the express clarification in the European law that its provisions ”do not impose a general obligation on service providers to monitor the information, which they transmit, or store on the request of a recipient for the service, nor a general obligation to seek facts or circumstances indicating illegal activities.” Similarly, in the US, both courts and legislation broadly seek to reduce the liability of service providers on charges such as copyright infringement and defamation।

The Digital Millennium Copyright Act, for instance, spells out the criteria for establishing liability and makes it difficult to sue service providers vicariously for copyright infringement committed by third parties. So, which way should Indian laws go? The way the advanced countries have gone, or in accordance with the wishes of some misinformed MPs that would spell the death of Internet in India

TOI Link: http://epaper.timesofindia.com/Daily/skins/TOI/navigator.asp?Daily=C

Windows Live Mail

Windows Live Mail is Microsoft’s successor to both Outlook Express and Windows Mail, the latter of which ships with Windows Vista. Microsoft describes Windows Live Mail as a superset of both of these consumer-oriented email products, and they will only actively develop Windows Live Mail going forward. Windows Live Mail is dramatically nicer than either Outlook Express or Windows Mail, and it includes a lot more useful functionality, especially if you’re a Hotmail user. (This applies equally to msn.com and live.com accounts as well.) But Windows Live Mail isn’t limited to just Hotmail accounts: This is a full-fledged Internet communications client, with support for POP3 and IMAP email, RSS feeds, and USENET newsgroups.

Originally envisioned as an ad-supported email client for Hotmail users, Windows Live Mail has evolved over time and is now a much more impressive release as a result. The shipping version of Windows Live Mail–now available in a feature-complete public beta–offers seamless Hotmail/MSN.com/Live.com integration, as expected, POP3 and IMAP email functionality that rivals third party applications such as Mozilla Thunderbird, RSS support, USENET newsgroup support, and integration with various Windows Live services. If you use Hotmail and/or other Windows Live products like Windows Live Messenger, you’re going to want to check this one out. Heck, if you use Internet email of any kind, you’re going to want to check this one out.

Windows Live Mail sports the new Windows Live look-and-feel, which is heavy on the whites but with high-contrast bluish-green accents. Like newer versions of Outlook, and like the Web-based Windows Live Hotmail, the Windows Live Mail application is visually split into three mail columnar panes, from left to right: Folders, Message list, and Reading pane. Actually, there’s an odd fourth pane called Active Search, too, but you can and should turn this off: Active Search is a weird front-end to Microsoft’s Live Search service, and its real purpose is to deliver ads and sponsored results.

In many ways, Windows Live Mail works like Windows Live Hotmail, and if you’re familiar with the new version of that Web service, or with traditional email clients like Outlook, you’ll have no problem getting up to speed. Architecturally, Windows Live Mail is based on Outlook Express and Windows Mail, so some UI bits, like the Options dialog, and the files Windows Live Mail creates, like the .eml email files, might look familiar. What’s old is new again.

I am using Windows Live Mail as my primary email client since a few weeks and have absolutely no issues. I like some of the customization bits: You can color-code the folders for each email account you configure and apply a Windows Live color scheme to the entire application so that it matches your other Windows Live applications and services.

Speaking of integration, Windows Live Mail is particularly useful if you’re a Windows Live Messenger user. It can be configured to automatically log you onto Messenger whenever you launch the mail client. On the flipside, if you see an email alert in Messenger and click it, Windows Live Mail will launch instead of forcing you to use the Web client. The Contacts portion of Windows Live Mail, which is also a native Windows application, integrates your traditional email contacts with your Windows Live Messenger contacts list, too. A Blog button on the application’s toolbar lets you publish the current message to your Windows Live Spaces blog.

As a modern email application, Windows Live Mail supports instant search, which works wonderfully. There’s also an Outlook-like search folders feature, though I haven’t found a way save email searches as dynamic virtual folders. Instead, stock saved search folders, like Unread email, Unread from contacts, and Unread feeds, are available.

So why would you want to use Windows Live Mail instead of the Windows Live Hotmail Web service? First, and most obviously, Windows Live Mail works offline. So you can sit on an airplane or in some other disconnected location, navigate through and read your email, respond to emails, write new emails, and perform other actions that would be impossible with the Web client while offline. Once you’re online again, all the pending email is sent and everything is synched up again, just as with Outlook and other traditional email clients.

Windows Live Mail also features email account aggregation, so that you can easily access email from two or more accounts (be them Hotmail/Live.com accounts or any combination of POP3 and IMAP accounts), all from the same location. With Web-based email services, you might need to have a different browser window open for each service.

From a safety perspective, Windows Live Mail also provides protection against phishing attacks, viruses, and other malware. This works for all account types, so even though your Hotmail account may be protected by server-side AV scanning, your POP3/IMAP accounts might not. And if you’re into the Windows Live stuff, the integration pieces are quite interesting as well.

Windows Live Hotmail is free and available for users running Windows XP with Service Pack 2 (SP2) or Vista (any version). If you’re currently using Outlook Express or Windows Mail, I strongly recommend upgrading to this product immediately. It is nicer looking, works well with non-Hotmail accounts, and offers much more useful functionality than its predecessors. I like it quite a bit.


Technorati : , , , , ,

Edit in Browser

Edit any web page in browser without any other software

This is cool!

GO to any web page, clear the address bar, and paste this:

javascript:document.body.contentEditable=’true’; document.designMode=’on’; void 0

and hit enter.

Feel free to edit whatever you want on the page!

Salary Negotiation

OK. that’s what we all do it for money… not every one right. This is probably the weakest area for techno savvy guys. They are not good negotiators. Many guys at the first instance smile and say “NEGOTIABLE SIR“. So here are some points:-

√ Do a study of what’s the salary trend? For instance have some kind of baseline. For example what’s the salary trend on number of year of experience? Discuss this with your friends out.

√ Do not mention your expected salary on the resume?

√ Let the employer first make the salary offer. Try to delay the salary discussion till the end.

√ If they say what you expect ? , come with a figure with a little higher end and say negotiable. Remember never say negotiable on something which you have aimed, HR guys will always bring it down. So negotiate on AIMED SALARY + some thing extra.

√ The normal trend is that they look at your current salary and add a little it so that they can pull you in. Do your home work my salary is this much and I expect this much so whatever it is now I will not come below this.

√ Do not be harsh during salary negotiations.

√ It’s good to aim high. For instance I want 1 billion dollars / month but at the same time be realistic.

√ Some companies have those hidden cost attached in salary clarify that rather to be surprised at the first salary package.

√ Many of the companies add extra performance compensation in your basic which can be surprising at times. So have a detail break down. Best is to discuss on hand salary rather than NET.

√ Talk with the employer in what frequency does the hike happen.

√ Take everything in writing , go back to your house and have a look once with a cool head is the offer worth it of what your current employer is giving.

√ Do not forget once you have job in hand you can come back to your current employer for negotiation so keep that thing in mind.

√ Remember the worst part is cribbing after joining the company that your colleague is getting this much. So be careful while interview negotiations or be sportive to be a good negotiator in the next interview.

√ One very important thing the best negotiation ground is not the new company where you are going but the old company which you are leaving. So once you have offer on hand get back to your old employee and show them the offer and then make your next move. It’s my experience that negotiating with the old employer is easy than with the new one….Frankly if approached properly rarely any one will say no. Just do not be aggressive or egoistic that you have an offer on hand.

Top of all some time some things are worth above money :- JOB SATISFACTION. So whatever you negotiate if you think you can get JOB SATISFACTION aspect on higher grounds go for it. I think its worth more than money.