Never Make Counter-Offers - <AUTHOR> http://bramcohen.com/2011/12/04/never-make-counter-offers <comment><USER3> And then there's another post waiting to be written -- "Never Accept Counter Offers."

I didn't heed this advice, and took a counter offer (doubling my salary at the time). This seemed like a good deal.

What did I turn down? 10,000 shares of Microsoft stock. In 1983.

Oops...

<comment><USER4> For those curious, 1 share of MSFT in 1983 is ~= 288 shares today due to splitting, making this stock worth $87MM.

Sorry Jeff, don't mean to rub it in. Just had to do some Googling (ironic, I know) and figured I'd save others the time.

<comment><USER5> 2,880,000 shares would be worth $87 million today. However, since 2003 (after the last stock split) MSFT stock has had dividends. In total those dividends have come to $6.75 per share, adding an additional $19.44 million for a grand total of $106.44 million.

<comment><USER6> And if you sold your MSFT stock at its peak and invested all that money in Apple stock instead, you would be one rich motherfucker.

<comment><USER7> You'd be worth a billion or two yeah (I'm not sure if the google and yahoo finance charts are split-adjusted, I'll assume they are in which case, since MSFT's peak corresponded to an AAPL high tide ($25 in December 1999, up from $4 in January 1998 and would fall to $7.5 by December 2000) and the ratio was ~2:1 (both stocks have split 2:1 since so that does not need to be taken in account) he'd own 5.76 million AAPL shares worth... $2.6bn (at the current $459 price))

</comment></comment></comment></comment></comment><comment><USER8> This is counter-intuitive from a business standpoint. Managers behave this way because they've learned through experience that:

1) Most of the worst employees hang on for dear life to their jobs and don't dare risk losing them for any reason (asking for a raise, etc). Incompetence or sub-par job performance not withstanding.

2) Occasionally employees get a fire lit under them by a spouse, mid-life crisis, etc and attempt to obtain a raise. Doing so communicates that the employee wants to stay at the company, and that they can be low-balled.

3) The best employees have mobility in the job space and can get better offers. This is why quitting is the only reliable way to get a raise (counter- offer). The employee has clearly shown market value above their current position, and the psychological effect of social proof kicks in.

There are of course exceptions, but even a moderate amount of time in a large company shows this to be generally true. Managers are incentivized to keep personnel costs down, and only give in if their hand is forced. It's just human nature at work.

<comment><USER9> Am I insane for being completely satisfied with $80,000/yr to do really cool multithreaded programming work on some seriously beefy hardware? (Midwest area.)

I wouldn't ask for a raise for the simple reason that I'm totally satisfied with my number. So I'm just trying to figure out which of the following is true: I am overpaid, I am stupid for being content and happy, or people just tend to be greedy.

<comment><USER10> >Am I insane for being completely satisfied with $80,000/yr to do really cool multithreaded programming work on some seriously beefy hardware? (Midwest area.)

In 10 years of midwest experience, $80k is probably a bit on the low side for systems-level work. Just a few years ago I would see DreamWeaver jockeys pick up full time for ~$50k/year. One hire did NOT know the difference between HTML and an HTTP server, someone else called me into a _training_ session she was hosting and asked why her form wouldn't work. She had set the form's action param to email:

      <form action="mailto:email@example.com">

Sadly I'm not kidding. :(

On the high-side, I've seen C/C++ contractors charge $100-$250/hour, depending wildly on the individual consultants.

So I don't think you're crazy for being happy. And great working conditions can have an often immeasurable impact on life. Happiness, is, after all, the end game - and a guaranteed $80k/year might be worth more than an unknown $120k/year for some people.

<comment><USER11> Mailto actions were widely supported in early (pre-Netscape!) browsers, weren't they?

<comment><USER10> Cool, I didn't know that (started late 90s here) but that wasn't what this person attempting to do. Apparently she had asked for the source from another dev's script and saw something like:

      action="process.php"

And just thought This Should Work™ too and put the mailto: into the form. When it happened, in front of 50 other people, I just stared at her for a moment and said it was complex and we could look at it later. Not really much else you can do in those situations.

<comment><USER12> <http://www.google.com/search?q=mailto+form+action>

</comment></comment></comment></comment></comment></comment><comment><USER13> This is a great article. It describes exactly how salary negotiation works in the US, and now when someone asks, I won't have to write it all out myself.

Ironically, I only realized the way things worked at my last job. I wanted to get paid more, but didn't really know how. Then a few companies contacted me out of the blue; I interviewed at each and was offered a job at each. They all involved moving, which I didn't really want to do, but I kept that to myself. I then asked my current employer to match the highest offer, which they agreed to do. Then I showed them the offer letter, and they didn't believe that my other offers were so high, and tried to negotiate me back down to my current salary. I put in my two weeks noticed and my managers looked extremely surprised. Apparently nobody had ever actually followed through on their threat to quit; everyone had used "I have another offer" as a way to get an easy raise (but never as much as the mythical offer).

Anyway, my current employer is More Enlightened and I don't think I will have to play this game for a long time. Which is nice, because you never actually win...

<comment><USER12> Interesting, because many posts here accuse your current employer of being an aggressive screwed negotiater, with full time compensation specialists.

Posts by former or non-employees, so, perhaps biased.

<comment><USER13> People are mad that Some Random Hedge Fund will pay them more than Google and that Google won't match it. This is upsetting because now they have to choose between a shitty job that pays a ton and a great job that merely only pays a lot, when they want a great job that pays a ton.

Honestly, nobody's ever offered me more money than Google, so I have no reason to complain.

</comment></comment></comment><comment><USER14> There are organizations where it takes the threat of quitting to get one's salary, job duties, etc. reassessed. There is a lot of poor implementations HR processes out there - and poor implementation by managers, rather than company policy, often underlies the situation.

Many managers no more want to have negotiations about pay and advancement, than many employees do - there are two sides to the coin, many employees prefer the excitement of an affair with another company than trying to work out the existing relationship. The new company expresses their love; the old ignores the employee.

In other words, the situation described is frequently a failure of communication between supervisors and managers and their employees.

<comment><USER12> The "affair" metaphor is perfect perfect. Interviewing is a socially acceptable form of romantic dalliance.

</comment></comment><comment><USER15> At my previous job, I signed on with really low pay because I had little professional experience, but tons of personal experience. They quickly realized they were underpaying me and in a year, I was almost at what I was worth, and at 3 years, I was there. Since this was my only real experience on my resume, I felt this was a good response from them, and they valued me.

Then they refused to give me good raises the next 2 years. My skills were increasing faster than ever, and I was the only guy who knew the entire system inside and out. Everyone in the company came to me when there was a problem because I knew how it all fit together. (I did not hoard this knowledge... Others were disinterested in having it, or didn't stay long enough to matter. I was unable to pass it on, and documented as much as I could at all times.)

So at 5 years, at my review, I asked for a raise. The answer was that if I "really cared" I should go talk to my boss's boss. ... Seriously? After some arguing, my boss eventually told me that they would be looking to correct everyone's salaries within a year.

Faced with the knowledge that they intended to knowingly screw me for a year, and then possibly continue afterwards, I started replying to the job offers that had been coming in. I had previously been ignoring them.

Right away, I found a company that looked good, and signed on. For a 40% pay hike. I had known I was underpaid, but didn't realize it was that much.

6 months later, the pay raises came in at the old job. A friend who was making what I made (!) got a 20% increase. He managed to find get a job offer at the same rate I was now making, and took it back to them. They refused to match it.

And in case that wasn't insult enough, they put out a job ad for 7 new people at the rate I was now making. The rate my friend tried to get them to pay. Their existing, experienced, efficient works were worth less to them than random people off the street.

I told my new boss about all this and he gave the same advice that a lot of people here gave: Do not accept a counter offer. IF the company gives one, they intend to replace you soon with someone who won't hold them hostage. Because that's how they see it. You are demanding that they pay you more, or you'll quit and leave them short of staff until they can find a replacement. They can't take the chance that you'll do it a second time, so you're out of there as soon as they can make it happen.

And he's right. I'd do the same thing in his position. All he needs to do to avoid that problem is to pay me properly, and that's happening. It's so simple.

<comment><USER16> So...

-If you ask for a raise without an offer in hand, you have a weak bargaining position

-If you ask for a raise with an offer in hand, you are "holding them hostage"

What is an employee to do then? Simply expect fair raises to come periodically, initiated by the employer, and quit if they don't?

<comment><USER17> Treat your employer like an employee.

If they're underperforming and not living up to what you want from them, fire them and find someone else who will.

I don't understand why employees are expected to just act helpless and be held hostage because someone gave them a job. If you're good in your field (especially in an area like tech), you should have no trouble finding other jobs at your fair market value and keeping your employer honest.

<comment><USER18> This is how I view just about any business relationship. They are not hiring me, I am giving them something in exchange for them giving me something. If the arrangement is not beneficial to either of us, it should be renegotiated. I have no problem finding someone else to enter an arrangement with (including contract work).

If I need something I don't go on my knees with my hand out. I understand that in the current economy, the balance of power has shifted towards employers, but it's times like these that the above attitude can make all the difference (for the better).

I also take every job I do very seriously and never abuse the responsibility I'm given. People appreciate those who can get the job done, a lot of which I can attribute to my success. If you do have a cocky attitude, it helps to be able to back it up ;).

</comment></comment></comment></comment><comment><USER19> > Management figures as long as they always match what someone is offered > elsewhere, the employee will always prefer to stay

Do some companies _really_ believe that? I can't speak for the world of employees, but if I have to put in the work of finding another job because my salary situation is stagnant, I am going to be very bitter with my current employer and require a crazy large counter offer to consider staying.

<comment><USER20> "Management figures as long as they always match what someone is offered elsewhere, the employee will always prefer to stay"

This is not true (the original post, not yours). Typically, when an employee submits their resignation letter, they are out of the company, literally or figuratively.

If an employer makes you a counter-offer, never, _ever_ take it. First, you already have a reason that you wanted to quit. It's usually not _just_ for the money, but probably for other reasons (e.g. intellectual boredom). If you are unhappy with your job, more money will just not help. As someone wise told me once, "Money is not a motivator, but lack of money is a de-motivator."

Secondly, and more importantly, the reason the employer is making a counter- offer is not to entice you to stay, but to buy enough time to find someone else -- a _loyal_ and qualified someone else -- to replace you. Effectively, they are making you the counter-offer so that they don't have to spend the time and money looking for someone and training them, when they can have you train them for six months (even with a slight-but-temporary increase in your salary). You will be let go as soon as the employer feels that the new employee has been trained adequately.

The moral is, once you submit the resignation letter, stick to your guns, and don't be fooled by counter-offers.

[Edit: forgot to add, another reason they prefer you to stay is so that you can finish your current project. This minimizes risks to your project, while at the same time training your replacement. The employer would only keep you until the current project is complete, and you will probably not get any new ones.]

<comment><USER21> > Secondly, and more importantly, the reason the employer is making a counter- > offer is not to entice you to stay, but to buy enough time to find someone > else -- a loyal and qualified someone else -- to replace you.

How does one decide that an outsider is "loyal"? More often than not the company will be "poaching" the outsider from another company. Doesn't that suggest that outsider is not loyal? And why the hell any company that does not offer life employment would expect loyalty from employees?

<comment><USER12> Bloggers, routinely overlook this wisdom. Also, your replacement is nowhere near as competent as you at your job, if you have any unique responsibilities (code you alone wrote). Current employees are far cheaper than new hours, if productivity is taken into account (but often it isn't)

<comment><USER20> I agree, that's exactly the point I was trying to make.

Btw, I think I fat-fingered and downvoted you, so I'll upvote another one of your comments (sorry)

</comment></comment></comment></comment></comment><comment><USER22> Ben Horowitz (of a16z) discusses just this very problem:

[http://bhorowitz.com/2010/08/23/how-to-minimize-politics- in-...](http://bhorowitz.com/2010/08/23/how-to-minimize-politics-in-your- company/)

I enjoy Ben's blog post because talks about a more general company problem (politics), and gives guidance and process on how to avoid politics.

<comment><USER23> There's a lot of great insight in there, but he's talking about senior executives, not technical contributors. From the article:

 _if you manage a junior employee and they ask you about their career development, you can say what comes naturally and generally get away with it. As we saw above, things change when you deal with highly ambitious, seasoned professionals._

I've worked with Ben and I know that if a highly-valued technical contributor turned in a resignation he would make a counter-offer to keep them.

</comment></comment><comment><USER24> My first professional experience was working at a company where this seemed like the norm. They had no well-defined plan for advancement or raises, and I was constantly given the run-around when I would bring up the topic in conversations with my manager or HR.

Those which consistently threatened to quit renegotiated by throwing other employees under the bus, which led to a very tense work environment.

I wholeheartedly agree with the sentiment that retaining employees by expecting them to renogiate for themselves is wrong headed, but I'm not sure that "never make counter-offers" is a great philosophy. You paint yourself into a corner by having this doctrine which doesn't allow you to have your whole arsenal available when the moment arises in which you might want to make a counter-offer to retain an employee.

</comment><comment><USER25> _Sooner or later the lower paid employees are either going to get the feeling that all the necessary secrecy around salaries means they're getting screwed (because, um, they are) or find out that someone got a raise by quitting, and go about doing it themselves._

A good axiom I've always gone with is that the amount of pressure and process a given company has built into promoting secrecy about pay is inversely proportional to my desire to work for them. If you're asked by management to never discuss salary with your peers, you know they're screwing people.

<comment><USER26> Management that engages in that frees up more money for others who want to negotiate. Why should management give money to people who don't want it?

<comment><USER27> It's a productivity killer. If everyone knows that John is a better developer than Bill, but Bill gets paid twice as much because he understands corporate politics, then people focus on politics, feel like life is unfair, etc. The money saved by underpaying your best employees is rarely worth the inevitable productivity hit and loss of talent.

<comment><USER25> Yes, I agree with Cohen here. Smart companies reward productive, smart employees incrementally, and don't place the burden of negotiation entirely upon them. This is not to say negotiation isn't possible or beneficial to the employee. But if a company rewards employees with regular raises and profit- sharing, negotiation isn't as political.

</comment></comment></comment></comment><comment><USER28> this isn't going to be very popular, for obvious reasons.

> The most devoted, upstanding employees are the least paid, and the most > conniving, disinterested ones are paid the most.

disagree. the best employees are the ones are constantly being recruited, they know their value, they have the quitting credibility to leave and go get a job _anywhere else_ if their value isn't met.

anyway, if the employee wants to stay, it shouldn't get to the point of a counter offer. they ask for the raise, they have implied quitting credibility that is obvious and doesn't need to be used as a threat, they get the raise. if you have to actually threaten to quit, somebody is doing something wrong.

> If an employee tells you they have a job offer, tell them that if they take > it then you'll wish them well, and stick to it.

clearly Mr Cohen isn't working with superstar engineers, the type that are a massive blow to the company if they leave. you do what you need to do to keep them at any cost, not whine on a blog.

<comment><USER29> > clearly Mr Cohen isn't working with superstar engineers,

I can't find where he works(wikipedia, his blog doesn't mention anything). But considering he is the inventor of BitTorrent protocol and wrote the first client, I assume he won't be working at a place where his team doesn't comprise of equally smart people.

Also, his point was your strategy shouldn't be to make counter-offers, but to optimize the salaries and workplace in a way that people don't feel they have to quit to get counter offers.

<comment><USER11> > But considering he is the inventor of BitTorrent protocol and wrote the > first client, I assume he won't be working at a place where his team doesn't > comprise of equally smart people.

I can't figure out what you're trying to say, but if you think there are enough programmers as smart as Bram to staff an entire company, you're a fool. And if you think they all want to work for Bram, you're doubly so. Lots of them want to start their own projects, not work on somebody else's.

<comment><USER29> > I can't figure out what you're trying to say, but if you think there are > enough programmers as smart as Bram to staff an entire company, you're a > fool

I am saying Bram Cohen isn't going to work at a place where grade school teachers tell him to settle down(an example picked from some other thread where someone was telling about grade school teachers managing a bunch of programmers).

He can be selective at this point in his career. He will most likely work with small teams with smart people, or big names like GOOG, AMZN et al. which are known for their superior engineering culture.

> And if you think they all want to work for Bram, you're doubly so.

You know, there are a lot of good engineers. He doesn't need all of them. Who gives a crap if all good engineers want to work for him or not, as long as he can find n good engineers who want to work with him.

PS: Take a breath. I would have done without your fool remarks.

<comment><USER11> > You know, there are a lot of good engineers.

There are not a lot of engineers as smart as Bram Cohen. I've met maybe ten in my life, and one of them is dead.

<comment><USER30> _There are not a lot of engineers as smart as Bram Cohen. I've met maybe ten in my life,_

These statements appear to contradict each other...

<comment><USER11> You might think so, but I'm talking about people like Len Sassaman, L. Peter Deutsch, Richard Stallman, Dan Kaminsky, Ed Fredkin, Ian Hickson, Allan Alcorn, Zooko O'Whielacronx, Norm Hardy, Graydon Hoare, Ian Goldberg, and Richard Greenblatt — world-famous hackers I know, many of whom are dumber than Bram is. There probably aren't dozens and dozens more out there that I haven't heard of, let alone hundreds or thousands.

</comment></comment></comment></comment></comment></comment></comment><comment><USER31> I think the essence of what he is trying to say is very true, although his approach may be a little dramatic.

Ultimately retention is about creating an environment that is pleasant for your employees. This means creating opportunity financially, professionally, and personally. It's hard for any employee to leave a job that appreciates them and fosters their all around growth. Money is certainly part of it but in the big picture the message is "Build a great workplace". It's a proactive approach of doing good instead of a reactive set of rules on what not to do.

</comment><comment><USER32> It took me many years to learn the leave and counter game. The caveat is once you start playing this, you lose trustworthiness in the eyes of your employer. You get money, but lose promotions.

I think firms need to be consistent. Either play the game all the time, or never. If you waver, you might lose someone who just thinks it's a way to get a raise.

The investment banks are the worst at this.

</comment><comment><USER33> Making or accepting counter offers only ends well when the employee is inexperienced and/or confused as to why he is quitting. In any other case, you're only delaying the inevitable, and in most cases the short-term benefits of that delay will be overshadowed by the mid- and long-term consequences (less need to fix the real problems that led to the employee quitting, employee growing restless again quickly because it in fact was _not_ just about the money, etc).

</comment><comment><USER34> "Management figures as long as they always match what someone is offered elsewhere, the employee will always prefer to stay, because that's easier to do, and salaries are kept to the absolute minimum they can be with no real risk."

No. Could be they prefer to stay but have found out that their value is higher elsewhere. Nothing wrong with that. Also doesn't mean that the company is knowingly trying to save money and clearly knows the value of the employee or the position. If someone doesn't like their job and finds a job that is clearly better (maybe it's just closer to where they live with a little more money) they might not even care what the response is of the employer.

Besides, if the person didn't in some way desire to stay they wouldn't even present an offer to stay.

By the way, all this info pertains to the tech situation right now. In traditional business it's not always great to be paid the max of your value. Those are the people that are let go first when the boss has to cut costs. The people who provide the most value might very well be the ones to keep their job.

</comment><comment><USER35> > The most devoted, upstanding employees are the least paid, and the most > conniving, disinterested ones are paid the most.

"disinterested" means impartial or unbiased.

"uninterested" means not interested.

I wasn't going to comment on this (and thereby be a grammardouche) but I've seen the word quoted/used in the comments so many times that I thought people might actually not know this!

</comment><comment><USER36> The behavior described in the post sounds like the kind of intellectual and moral laziness that you'd have to expect when The Market is assumed to yield Truth, like some kind of modern Oracle of Delphi. And those who practice it risk serious rotator-cuff injury from constantly trying to pat themselves on the back for being so incredibly cynical... um, 'scuse me, _efficient_.

Management, done right, requires the ability to make _judgments_ , including character judgments. Collapsing all possible human motivations into the single dimension of fear/greed may swell the bottom line of whoever can do it the most cynically, until at some point it doesn't, because over time (if not immediately), it will produce an atmosphere that is poisonous to innovation.

</comment><comment><USER37> This post strikes a chord. Personal experience below, economics first.

It seems best for the species that wages be allocated to where they have the highest marginal impact on the final value of goods produced or services rendered. If a great employee happens to be too squeamish to ask for a raise, but he will still go on adding steady value to the widget, it strikes me as a societal waste to initiate a pay raise for him. However, there is this HUGE possibility of negative externalities from chronic under compensation (resentment of firm, shame of cowardice for not asking for more, laziness, obstinance, etc). This makes the problem of wages extremely difficult. Factor in the complexity that "market prices" based on outside offers are inflated to cover switching cost to the employee and it gets even harder to determine the RIGHT wage. Without quantifying these externalities, the best answer to what the right wage is, from the firm (and probably system) perspective, is the least amount of money you will take to perform the work. If this sounds un appealing to you as an employee, its probably good you're reading hacker news! THE PAIN of salary management comes from finding that "lowest amount" you're willing to take. Spending energy negotiating just to get to your scenario of indifference is slow torture. The winners in the whole process are probably below average people for whom salary reverts to the mean.

I left 100k USD in the midwest to become a west coast entrepreneur. In Chicago I got my salary raised three times in three years, first unsolicited for performance, second to counter a threat to leave, and third as a promotion. The threat to leave tied the promotion in dollar amount, but was highest in percntage terms at the time. The unsolicited raise for performance was so small that it set me down a destructive path of engineering larger pay raises which i thought i deserved and didn't receive.

What I Learned -Money feels VERY important when you hate your job -Big company jobs are comparitively more valuable to people with children and houses -While the employee-led raise environment is painfull to experience, it seems to produce an appropriate allocation of LABOR eventually

Hopefully one of us will someday solve the puzzle of quantifying the value of individual labor inputs to finished goods. This would have two amazing effects. 1) workers would be fairly compensated, 2) all workers would have empirical info on how to improve their value add.

<comment><USER12> I hope you appreciate how your logical train of thought obliterated the facile economic myth you started with.

</comment></comment><comment><USER38> The OP ignores the fact that at most decent tech companies, a TON of time is spent on annual or semi-annual reviews to determine raises and bonus comp for better performing employees. The exact reason this is done is to ensure they're being compensated fairly and don't go off shopping for offers.

It's not true that management has the goal of minimizing comp for employees. Management tries to minimize _total compensation expenses_, which includes the costs associated with replacing an employee (and those costs can equal a full YEAR of comp in most cases.) Not to mention the disruption to projects that occurs when a key team member departs.

Really smart tech companies take a step farther: if you're in good standing when you leave, they have a special process for hiring you back if you decide you want to come back later. It's smart: they expect that lots of the best employees will want to try their hand at a startup or smaller venture at some point, but they don't burn the bridge with someone they know is a good team member.

</comment><comment><USER39> This is decent advice for companies. And I presume some will follow it "No $EMPLOYEE, it's for your own good that we don't make counter-offers, sorry!".

However they have to follow the other part of the advice: _"Have clear and consistent salary guidelines, and regularly give raises to people who are outperforming their pay level. Don't be a tight-fisted, short-sighted moron."_

</comment><comment><USER40> I kind of like the idea of only giving raises to employees when they have a offer letter for another job. That way there is no doubt in the employees mind about how much they are worth.

Why not turn the problem around, instead of only having your most "conniving, disinterested" employees looking for new jobs, why not encourage all your employees to have a look around. Why not even give them some work hours to "assess their own worth". Send out CV's and do phone interviews.

Then when your best employees come back with better offers you will be happy to pay them more. Even better, the guys who are not working out have somewhere better to go and everybody is happy.

Of course, it's a dangerous game and you might not be able to afford more.

.

I've never read a good plan for doing employee reviews and salary increases.

"Have clear and consistent salary guidelines, and regularly give raises to people who are outperforming their pay level."

The problem is right here, what is a pay level. Just because there is a number somewhere in a spreadsheet doesn't mean an employee will be happy with what you give.

<comment><USER41> I think if you consistently did this you would end up overpaying, for a few reasons. It's pretty common for offers to be made on the high side as an incentive to sign on, for example. People could get higher offers from places that have less appealing work (i.e. the job is not more valuable overall). Generally if you're always matching the highest offer, you're probably paying above the fairest sustainable wage.

<comment><USER42> Being that open about it would mean employees would let it slip, and you'd be a target by competitors to raise your costs far higher than they'd need to be.

</comment></comment></comment><comment><USER43> My ideal company would have a culture where people would want to work there for free. Above a certain amount, money stops contributing to real happiness. Some people have even suggested that number is as low as $60,000 in the United States. [1]

Unfortunately jobs are not the stuff we often fall in love with. Those opportunities are few and far between. But I think it is a far nobler goal to try and make more places like that than to have the most competitive salary policies.

[1] [http://www.ted.com/talks/daniel_kahneman_the_riddle_of_exper...](http://www.ted.com/talks/daniel_kahneman_the_riddle_of_experience_vs_memory.html) (see q&a in at the end of the transcript)

<comment><USER44> 60K is what, around $3500/month after taxes. If you live in NYC or SF, that's not a lot. Barely enough to get a small apartment, food, and go out once in a while, and save a little.

<comment><USER12> More like $5000. 30% effective income tax kicks in around $150k annual salary. Still, your point holds. Not retiring or having a very healthy and actualized child or three on that salary.

<comment><USER45> $5,000 * 12 = $60,000. I don't think the OP's suggestion of $42,000 a year, take-home, was too far off assuming a marginal tax rate of 25%.

</comment></comment></comment></comment><comment><USER46> Is this his only post? Or is there someway to browse this site that I'm missing?

<comment><USER47> Looks like he may have done some cleaning. I noticed he doesn't seem to own bitconjurer dot org anymore, maybe this is why?

<comment><USER48> I still own bitconjurer.org, there's a misconfiguration of some kind which needs to be tracked down.

</comment></comment></comment><comment><USER49> Horrible advice. Having unilateral policies like this are things that give people excuses to stop treating people like people.

Each case is different. It depends on the individual employee, their performance and role in the organization.

And I don't much like how you are blaming the employee for "not wanting to work for you". Of course that will be true for some people, who simply need a change for change's sake. However, do you not share some of the blame for a high quality employee seeking outside employment? What happened to that employee to want to make them work some place else?

</comment><comment><USER50> i've been on counter offer side of things a few times.. at first, it was nerve wrecking.. having to resign and admitting to have been "cheating" on your employer by secretly interviewing.. it feels horrible. but indeed, it was always well received (or maybe i was lucky in having rational bosses) in a do- what-is-best-for-your-career manner. and some of the counter offers were crazy good, but it would feel weird to stay based on that.. after all, while resigning i always listed other things that propelled me to do that (like being skipped for a promotion for 2 years because promotions were limited (to 1 per year) and other employees demanded them outright while i stayed quiet).

taking another offer is a big risk. you're leaving the cozy confines of your current job, where you know everyone and all the systems you've so carefully crafted over the years. Last time, the company i left for ended up laying off 60% of dev staff (myself included) 5 months after switching. But i am still glad i did it. i learned lots in those 6 months i wouldn't have if i stayed, and interestingly enough, when my old boss found out i was laid off he generously offered my old job back.

i have a friend, that outright tells his boss that once a year he'll be interviewing just to see what the market worth for his job is. This seems insane to me, but his boss is totally fine with that. My friend has a great job with amazing perks (sales) that would be very hard to beat elsewhere. This move does let his management know that he isn't going to stick around unless his growth at current place continues.

</comment><comment><USER51> It assumes that all employees are informed about other employees playing a quit game. From a management perspective, it may be good strategy to make the counter offer, if you could ensure that it is kept quiet from office gossip. Also, an individual employee has no incentive to broadcast the fact that he is using the threat of quitting, and is likely to play into that stratey if he receives what he wants in pay/status/hours etc.

</comment><comment><USER12> This discussion has overlooked the last paragraph of Bram's post, which is that counteroffers are a non-solution when the manager has already failed. Don't give counteroffers, because you should avoiding do situations where your employees get competitive offers from outside. There are good ways (money, respect, excitement) and evil (sweatshop campuses) to achieve that

</comment><comment><USER12> Bram Cohen was laid off just prior to inventing BitTorrent, right? No doubt that experience (and being a founder) colors his perspective.

</comment><comment><USER52> Or better yet, pay your employees what they're actually worth to you, and remind yourself regularly to evaluate them for raises.

</comment><comment><USER53> Usually there is more going on than $$$ when someone entertains the offer to leave a company. Getting more $$$ only plugs one of the holes in the dike and usually (in my experience) that person is going in 6 months anyway.

I never entertain counter offers simply because I consider it a firm agreement with that other company that I already accepted.

</comment><comment><USER54> The advise is similar to tricks to train dogs

</comment><comment><USER55> Sorry, guys, I am going to have to disagree with both this article and the suggestion that counter-offers should be turned down by employees.

The truth is that despite the fact that lots of hn (yc) type startups have employees working for enough to cover their rent or whatever, and a bit of equity that has absolutely no defined value, when the company does take off, it's only fair to ask: All right, thanks for sticking by me, now what are you guys really worth! What is this killer graphics designer worth ; what is this DBA back-end coder worth who has just scaled us from a bedroom to millions of customers ; what is this accountant worth.

If they don't have other offers, there is NO answer to that question. You can't appeal to the cost of their bedroom or car, you can't appeal to the chance to build something great, none of this is external or fair.

Fair is what the market says.

I remember somewhere years ago on Slashdot that it's impossible to be "ripped off" in a transaction, reasoning thus: "When you have a fistful of cash in one hand, and the offered good or service in front of you (forget what the example was), and you say 'ok' and get it, that's your choice, if you get what you thought you would get giving the money that was asked, you physically can't be ripped off. The money was in your hand and it was your choice".

Well, sorry slashdot poster from years ago: that's false. When you have a fistful of money and buy something, but you are radically misinformed about the market price (to your disadvantage) then you just got ripped off. If you sell your vintage gold (whatever) for a couple of bucks, being told it's just for the value in gold, but a vintage gold (whatever) is worth 100x what you just paid: then you just got ripped off.

The thing about talent like this is there is no market price because everyone is unique. The market price is whatever other offers you get.

In the vintage gold whatever example, if someone says "This only has a tiny bit of gold in it, I can give you $100 for it", but in the same town five out of the five other specialists you would sell it to if this person wasn't in front of you offer at least $3,000 - then you just got ripped off.

I'm not talking about if you were to sell it yourself (instead of to a specailists) to another buyer: maybe buyers themselves pay $8,000. I'm talking about other opportunities in the exact same circumstances and market.

The fact is, "intrinsic" arguments (like how many ounces of gold is in something), what food and rent costs, what you paid the last guy, whatever, are worthless:

the ONLY thing that establishes the market price in my market of my graphics designer is their other offers (not their own other work, which is a different market).. The ONLY thing that establishes the market price of my back-end engineer is their other offers (again, not their consulting work, which is a different market).

I want to be fair with my employees, and I want to be treated fairly. I don't want to rip anyone off, nor do I want to be ripped off.

The ONLY way to do this is to explore market prices, and the best mechanism to do this is through other offers (since no one is fungible with other people in this industry; you can't just 'look it up').

So I'm going to have to strongly disagree on all points here.

<comment><USER56> The market is inefficient because of the information problem - precisely as you say, everyone is unique. That harms your appeal to the market as a pricing mechanism.

Anyone making an offer for an unknown potential employee logically and necessarily discounts the offered salary by a certain amount to take account of the unknown. So the market price for a developer is lower than what that developer should be making once they are a known quantity for the most profitable position for them in the market.

And companies should give raises based on this - not on the market price, but on the known quantity, such that the only way that an offer exceeding the salary could be made is either (a) a position that creates more value (in which case the employee really should move, should money be their motivation) or (b) an irrational company.

<comment><USER55> I don't really understand what you're saying. I gave a pretty concrete example: I have Andrew or Alice who does graphics design, Barbara or Bob who does finance, and Carol (m/f) who does the back-end coding and all operations. They're pretty young, and I can't pay them what they're worth or anything near it. Now, I get some cash into the company: how do I now pay them what they're worth? What is your suggestion?

If my company competes successfully in its niche because of the level of fit and finish, and design, should I pay Andrew/Alice proportionally more than Barbara/Bob or Carol? Now what if my company competes successfully because of the scalable infrastructure - it's really an ops company, and it's just a faster service and that's why everyone uses it. Nobody cares about design. Then suddenly does Carol deserve more money than Andrew/Alice or Barbara/Bob? Now what if it's an excruciatingly tough market where everyone is incredibly price-sensitive. But by doing market research and have our financial acts together the best out of the companies competing in our space, we grow and prosper and persevere over them?

No. This is wrong. This leads to talented designers and finance gals and guys leaving because they're not being paid what they're worth OR appreciated. It leads to the ops company saying: "You don't get what you'd make elsewhere BECAUSE you're less important". This is the WORST POSSIBLE SOLUTION.

Of course, at an executive level you can choose to hire a BETTER designer/lead designer in one type of company, a BETTER or BETTER-CONNECTED or MORE EXPERIENCED finance gal or guy in another context, or a BETTER or MORE EXPERIENCED or whatever gal or guy for ops and back-end in a third context. You pay them more because they're WORTH more.

If you really want to go above and beyond, sure, pay them MORE than they'd get elsewhere. Show appreciation by paying or rewarding above market.

But your suggestion is right in line with command Communist economies, and goes about as far. By the way I think that's great in a small 1-5 person socialist setting (as in a family for example!). It's no way to run a company though.

*I also want to add that on the small level, "to each according to need" is also valid! If only one of the three first employees has a mortgage, then they might get a bit more to start off. This doesn't scale, and I'm telling you what needs to be done when you become an actual company with sound finances and a desire to grow, acquire and retain talent that won't be bitter.

<comment><USER56> I think you think I'm suggesting paying people what they're "worth", as if that has some intrinsic value.

That's not what I'm suggesting at all. My argument is entirely based on orthodox Western economics and free markets; and that's the jargon I use.

What I'm talking about is the market price for labour, _in an efficient market with perfect information_.

The labour market is not an efficient market. In particular, there are large information problems. It's only after you've worked with someone for a while that you reduce the information gap. And then you can pay them closer to the _true_ market price. This reduces the risk of them getting a better offer elsewhere, because offers from elsewhere _underprice_ labour owing to the information gap; unless they could be creating more value elsewhere (and hence command a larger salary, even taking into account the information gap) - <USER2> which case, for the (theoretical) good of society at large, they should move!

(Theoretical merely because not all utility is priced.)

<comment><USER55> I have a better understanding of what you mean, but I think we're talking about totally different things. You're talking about a few percentage points around a 'true' price (under or over), that account for whether someone is worth more like $80k or $95k.

I'm talking about who you'll pay $35k, who you'll pay $60k, who you'll pay $30k, and who you'll pay $80k when you first get funding, and whether you will pay anyone over $100k at all.

When market price of two of your employees are each 80-95k depending on how much information a potential employer in your geographic/other market (including you) has about them, then it is the worst possible result for you to justify a salary of $40 or $35 for either on some grounds of fairness. It's also wrong to pay one $95k and one $60k also alluding to internal factors, how much information you have about them.

You don't pay someone $60k who's worth $90k if you're being fair (it's different if you just don't have the money). We're talking about a 50% difference here, not the few percentage points that come from inefficiency of information.

I think if you had any idea what the average first employees of hackernews/yc type outfits get as initial offers, you would feel quite different about where the problem lies. (just my humble opinion).

your suggestion is not about such radical differences as compared with 'true' worth, but only smaller ones.

<comment><USER56> Most companies aren't startups, in the HN/YC sense of the word. I was addressing the majority scenario.

First employees in startups are playing a different game; a combination of risk and novelty. The employees are gambling on stock options and a payout (not a particularly rational gamble, of course); but they're also working on new technology, greenfield development, in an exciting environment, often with younger people who are less, shall we say, "conservative" in their career trajectory. All of this is utility to such first employees; and it compensates for salary, depending on their utility function.

As a company ages, the profile changes. Depending on how the employees have changed along with it, they may seek a different mix.

<comment><USER55> they may also get no stock or options. when they are young, recently educated, as you say they will jump on for the combination of novelty and a chance to grow and extend themselves.

when it comes time to pay them fairly, either after they have acquired the experience or simply you raise enough money to do so, fair becomes determined by what they get elsewhere.

</comment></comment></comment></comment></comment></comment></comment><comment><USER57> I disagree strongly. Management has better things to do than push unasked-for money on employees, especially in a young company. An employee who wants more money can and should ask for it.

<comment><USER58> It creates a lot of unnecessary tension between management and employees if employees can't just assume that they'll be rewarded for outstanding results and don't have to ask for it. If there's a tacit agreement that if you do great work you'll get a raise with a quarterly or semi-annual review process, employees don't have to get distracted by thinking about when they should ask for a raise or whether they need to get a competing offer to get leverage to ask for a higher raise.

Management might have better things to do, but if this creates an atmosphere where employees feel under-appreciated, they'll leave, and this churn can really hurt the company, which makes it a huge problem for management that could have been avoided by rewarding high performing employees earlier.

<comment><USER57> I agree that there is a cultural bias in favor of this type of wage structure, and that any company that ignores it does so at their own risk, as it will create unnecessary tension, as you say.

But still I bristle at tacit assumption behind the OP's point that both the amount and timing of my wage increases should rest in the hand of a manager. The OP is saying that managers should be enlightened about it, and I'm saying you can't trust management to be enlightened about it and should take charge of your own compensation.

</comment></comment></comment><comment><USER59> I love it when intellectual property thieves lecture others about how to compensate intellectual property creators.</comment>


Ask HN: What game has the best RPG party interface? - <AUTHOR>

Games need great UX design too! <comment><USER2> Well, UX depends greatly in the kind of game you are making. I consider the term "RPG" as a super genre (super class). In it you have WRPG's, JRPG's, Action RPG's dungeon cralwers, MMO's, etc. Depending on the the game, the concept of party and it's associated mechanics will change.

You also have to keep in mind that in some games a good UX may not be desired. While I believe an RPG's UX should be good (messing around with menus and inventory shouldn't be a chore), see the classic Resident Evil games.

One of the goals of the games is to evoke an atmosphere of uncertainty, fear and powerlessness. See how the health indicator is not a concrete value (75% life, for example) but an approximation (yellow life. You may know yellow means it's in [30-70]%, but you don't know the exact value.) This helps achieve the desired emotion while being, according to the traditional UI principles, a bad UI. It's not transparent enough for the user.

I consider the game's controls to be part of the UI. It's by using the controller and how the character moves the you interact with the game. MAny people dislike the RE's "tank-controls"[1], but I find it was a conscious and deliberate choice by the game designers to adopt this type of control. It's harder to control the character but help in achieving the desired emotions.

So, to answer you question... I don't know. But it's harder to evaluate game's UX's because it can't be evaluated in the same way we evaluate traditional UX's. Sometimes, in games, it's good to have bad UX's.

[1] [http://tvtropes.org/pmwiki/pmwiki.php/Main/TankControls](http://tvtropes.org/pmwiki/pmwiki.php/Main/TankControls)

<comment><AUTHOR> Right, I should be more specific but I was looking at party control / status / inventory management.

<comment><USER2> Ok, I know I've ranted a bit. First, what do you want? Just good examples, or you're thinking of making a game andwant some good examples?

Now, for inventory. You can have the _party inventory_ , like in JRPGS or the _character inventory_ like in Baldur's Gate. Personally I prefer the _party inventory_ because there is a lot less fiddly. But the other kind is more "realistic". There is one game that mixed the two in a way that I enjoyed. You have a _party inventory_ but each character has "slots" where you can put items to be used in battle. But in this case you don't have the whole inventory available.

Then you can have an _unlimited inventory_ , like in JRPGS, or a _limited_ one. You can limit it in two ways: Limited _space_ like in Diablo, or limited _weigth capacity_ like in Skyrim. In my opinion you should never mix them both. It's too fiddly, and too frustrating. In limited space you also can have item of diferent sizes. This is fun because inventory menagement becomes a sort of minigame (again, Diablo makes this pretty well).

With party control it's a lot more complicated. If the game is turn based or if there is the option to pause the action, the player should have total control of all the mambers of the party. If it's all real time, there should be an option to ssue orders. One game that does this well is Mount and Blade. You can issue orders to your troops including, IIRC, you could issue orders to the different kinds of troops. I feel this would be a nice addition to Skyrim, for example.

About status, I really liked what Final Fantasy VII did for status effects. If a character was nead death he would appear hunched, if confused he would have stars swirling around his's head and if poisoned he would glow in green. If he were under all these status effects, we would show all three effects and they didn't overlap or be in conflict with each other.

But, as I said in the previous post, it still depends on your objectives in the game. In pokemon you have direct control over your pokemons but I would like to see a similar game where you don't have direct control and you have to train their AI.

</comment></comment></comment><comment><USER3> Knights of the Old Republic was fantastic in terms of party management screens. The inventory screen was rough, so some way to collapse into item categories would have been appreciated.

Skyrim isn't bad, I still don't quite like the weapons screens though. Something about them all being in a list bothers me. In a way I see why they did that, but I'm so used to going to a screen similar to KOTOR or dragon-age that doing it the KOTOR or DAO way just feels more natural.

I'm a console gamer so in my opinion the biggest problem is having controls mapped for your character, and also having to do in-game hud menu navigation, AND having some way to command party-members, though voice control can resolve some of the command pain.

</comment><comment><USER4> hmm thats a good question. In most games like that the interface is awful.

This is not an rpg but 'frozen synapse' and 'frozen endzone' are actually good examples of a UI for controlling multiple guys acting simulataneously.

Also I remember dungeon siege having a pretty basic interface but also being quite functional (with 8 people in you party!)

The 'eye of the beholder' / 'might and magic' / 'legend of grimrock' way of doing things is effective but it basically turns your 4 characters into one big one</comment>


Why Vi Rocks - <AUTHOR> https://why-vi.rocks/ <comment><USER2> I've learned some vi, and emacs, Visual Studio, VS Code, XCode, IntelliJ, and Android Studio.

All the examples listed are pretty uncommon or trivial in any of the other IDEs (aside from the regex part, which is cool, but I never want to be in a place where I have to regex my code...ever). 90% of the time I'm doing simple code maintenance, with an occasional refactoring. And I know devs that swear by vi...they are developing any faster than I am, and I touch my mouse about as much as they do (hardly ever).

My favorite is still Visual Studio with Resharper, worst is XCode.

<comment><USER3> I am writing this from emacs experience (some if not all these features are in vi as well), there are features from emacs that make a real difference in writing programs especially:

* Unlimited yanking from kill rings: ie pasting text from history of the clipboard.(This is one thing I have most difficulty with when switching from emacs to modern editors)

* Macro recording and playback : recording an arbitrary set of edit operations and then replaying them any number of times.

* two or more code frames/windows side by side, even displaying the same file Surprisingly modern IDE guis seems not designed for it, eclipse can do it but clumsily.

* Remote file editing: use the IDE tools to edit file residing on another computer.

* Column edits or rectangle edits. Selecting a vertical column or rectangle of text and copying, moving it to another place.

<comment><USER4> > some if not all these features are in vi as well

I'm not sure exactly which vim features are also in vi. Vim has been a daily use tool for me since about 2007.

Vim has really good Macro recording. Vim + Tmux is great for side by side code frames, and there are plugins for showing multiple buffers in one Vim instance. Remote file editing is good with SSH + Vim. Vim has multiple registries for yanking/putting. Vim has column editing functionality.

Almost anything Emacs does out of the box Vim can do with either a plugin or with an external program pairing. I prefer Vim's keybindings because there are less "chords" (Ctrl-C and Ctrl-V are copy and paste chords, they requiring pressing two buttons at the same time). Too many chords causing my pinky fingers to become tired. Vimscript is a surprisingly powerful language for dealing with text data, but it's cryptic the first decade you are exposed to it.

EDIT: I'm more interesting in the code people write than the way people write it, but I wanted to share some of my vim knowledge and point of view.

<comment><USER5> Unless I've misunderstood, you can use splits to show multiple buffers in Vim without any plugins.

<comment><USER3> What about manipulating of splits, like converting vertical split to a horizontal split, enabling/disabling synchronized scrolling, etc..

<comment><USER6> You can do both of those things in vim. I don't mean to be nitpicky, I'm just mentioning in case someone reading this didn't know and uses vim. You can set scrollbind and convert splits (off the top of my head I think it's Cw Ch and Cw Ct).

</comment></comment></comment></comment></comment></comment><comment><USER7> I've been using Neovim consistently for the last few months and it's a game- changer. Terminals within Neovim that I can paste into/from my Vimwiki files or source files is amazing. It's not very different from a Vim setup and using it with the Qt GUI on Windows gets rid if the issue of having everything close when eventually having to call <C-w>. Meanwhile, in my linux environment it runs like a charm on a terminal.

<comment><USER8> Same here neovim with session management and tmux with session management, with tmux russerect and tmux continuum. And with the language server integration in neovim, its a swiss army knife that works well with most modern languages and devops.

<comment><USER9> I've got resurrect and continuum installed and all they ever seem to do is load up an empty vim window that is rendered improperly. What is your setup?

<comment><USER8> mostly [https://github.com/tmux-plugins/tmux- resurrect/blob/master/d...](https://github.com/tmux-plugins/tmux- resurrect/blob/master/docs/restoring_vim_and_neovim_sessions.md).

</comment></comment></comment></comment><comment><USER10> Half of it is "Why standard unix utilities rock".

</comment><comment><USER11> IntelliJ with the IdeaVim plugin is my goto editor nowadays. As others have said, I honestly don't find myself using the really fancy features of vim that often. What I do use frequently are basic motions together with yanking, deletions, word movement (w/e/b), marks, indents, centering (zz), page scrolls (ctrl+u/d), and using searches (f and /) to jump around in code quickly.

For those purposes, IdeaVim works just fine, and gives me all the little speed boosts of vim with the added bonus of (in my opinion) a much more robust coding environment. It even makes some functions better; for example, `gd` works super well and nearly instantly in IntelliJ since the definitions are supplied by the IDE's 'Go To Declaration' rather than some hacky vim plugin. Other editors have similarly sufficient vim plugins, e.g. VSCodeVim.

<comment><USER12> Have they fixed the issues with where the cursor ends up after certain operations? It's been a couple of years since I've used it, so I can't give an explicit example, but there were multiple common operations where the cursor would end up in a different location afterwards than it does in vim. This was really difficult for me because I still used vim a lot for other things, and it felt like it was actively eroding my muscle memory to use two conflicting implementations.

<comment><USER13> I use IdeaVim at my day job and can confirm it's gotten better. There are still some rough edges, especially around handling movements like L, M, and H which don't always go where you expect them to. And some operations like undo don't play well with the vim commands such as undo.

And yes, I completely agree about switching between vim and ideavim for different languages, the experience is very different and the sight differences are very noticeable.

</comment></comment></comment><comment><USER14> Vim is like Dvorak. The cognitive burden for remembering which key maps to what is high unless you use it 24/7.

<comment><USER15> Does anyone use Vim on a Dvorak keyboard?

<comment><USER16> I used dvorak for a bit. I didn't remap HJKL, since JK were still beside each other, and H was to the left of L (albeit, not on the same row).

In terms of transferring Vim 'motor memory' from a qwerty layout to a dvorak layout, IMO it meant focussing more on an added indirection of "which letters" rather than "which fingers where".

</comment></comment></comment><comment><USER17> Why do I use vi(m)?

* Eclipse - Forced to use this in University in the early aughts. I would say that crashing and clobbering systems was its best feature. You moved your mouse it crashed; thought about saving crash; need an update, now you need to format and clean install windows; want to print, printing works! want to compile, your gonna need to try again after restarting windows...

* SSH - In University we had some awesome terminal servers that were a joy to work with. I could access all my work from anywhere, regardless of how limited my local machine was. Vim was always there, chugging right along.

</comment><comment><USER18> "vi is the de facto standard Unix editor, you find it in every *NIX derived OS"

I was going mention a recent article I heard about that vi was going to be removed from upcoming Ubuntu distributions, but it appears that was an April Fools joke... <insert curmudgeon grumbling here>

</comment><comment><USER19> No mention of vim or neovim?

</comment><comment><USER20> The few times I have encountered nvi, it was just off enough from vim to give me a headache. Somehow it is worse than busybox vi, where I at least know to stick to primitive operations.

</comment><comment><USER21> Since I "grew up" with vi I mostly use vi when using vim, but I do appreciate syntax coloring. I find it easier to scan comments that way and pick out constants.

</comment><comment><USER22> i see people struggling, fighting with Intelli-J every day. I wish I could give them vim as a gift. All the extra stuff you think you can't possibly give up you don't need. I'm a professional text file editor. Vim is like playing the piano. I guess what I'm saying is learn to play the piano for real, and don't spend your life in a piano-player-helper IDE thing.

<comment><USER23> Vim is a fantastic text editor, but it is not an IDE replacement. Here's just a few IntelliJ features I use daily that Vim doesn't have: Go to declaration, find usages, rename method/class, change method signature, auto-import, shortcut to override method, easy-to-configure style rules, _really good_ code completion, quick access to javadoc.

I could keep going. Again, not hating on Vim. I use Vim keybindings in IntelliJ! I just don't think it's the best tool for working in large codebases.

<comment><USER24> Vim was designed for editing _text_. It was not designed for semantic analysis of _code_. The semantic plugins for Vim are hacky addons.

Having Vim bindings in IntelliJ is indeed the best of both worlds.

<comment><USER25> How do you get IntelliJ to not shred your CPU to pieces while indexing all the time?

<comment><USER24> It should not be indexing all the time. Only when you load a new project.

</comment></comment></comment></comment></comment><comment><USER26> vim for command line, pycharm for python, webstorm for web, geany for everything else that needs a GUI, works great!!

used vscode for 2 years on and off, finally decided to part away two months ago and bought webstorm instead, the time spent on vscode with all the configuration and plugins and settingsync(which is not reliable) is way more expensive than webstorm's license fee(same as pycharm)

</comment><comment> munk-a There appears to be a small issue with this article, it seems to have confused vi with the widely favored editor nano. It might be good for an editor to fix this omission as I'm sure it was in error. /s</comment>


VPN⁰: A Privacy-Preserving Distributed VPN - <AUTHOR> https://brave.com/vpn0-a-privacy-preserving-distributed-virtual-private-network/ <comment><USER2> Great idea. Was thinking of doing something like this for a while, but obviously the drawback is that you're suspect to being the exit node for someone who's doing something illegal, which is a risk I'm not willing to take for the sake of privacy.

Obviously you can start a whitelist, but as some other comment said, it's pretty limited... and I don't want the hassle to add in every domain I go to (given the number of different blogs posts from different domains that show up on HN).

For now, I'll be sticking to AlgoVPN because I can't imagine how they'll protect the safety of users too (maybe a blacklist... although that'd be hard to given the numerous "bad" websites out there that make you suspect of further surveillance).

<comment><USER3> But would you be more OK sharing your AlgoVPN exit? With the same sort of blacklist/whitelisr approach?

<comment><USER2> Probably. Given that AWS/GCP can't trace back to me then maybe. But at the same time I'm afraid government surveillance is government surveillance and petty tactics around hiding your identity to AWS/GCP won't cut it.

<comment><USER4> How do you know that AWS/GCP can't trace it back to you?

<comment><USER2> They probably can as I've (hopefully) implied in my comment. When I sign up for AWS/GCP for a bit more credits for free, I use a burner phone (if necessary), burner emails (catchall emails), and a debit card (although GCP and AWS can detect if you're using one made by privacy.com or DoNotPay... so I have to call my bank and get one every now and then).

Given this relatively bad information, it's somewhat hard to trace. But as I've said: Government surveillance is government surveillance. These petty tactics to get around AWS/GCP won't cut it. Pretty sure they'll call up my bank using the card details and get my info real fast.

<comment><USER5> Do you still give them your real name and billing address?

<comment><USER3> My AWS billing address was a largely abandoned factory, not far from Veliky Novgorod.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> I refuse to use a browser with a cryptocurrency attached to it.

It feels like the only reason it is being pushed so hard is so BAT holders can make a buck. It might be a great browser but I will always think of it as onecoin with a some chrome tossed in.

<comment> safeplanet-fesa Exactly. I am a big hater of everything that even remotely feels like a shitcoin. BAT is a silly useless project; I would not hate it if there was no conflict of interests, even if it's a silly project; but there is a huge conflict of interest - the developers want to make money out of thin air by issuing their tokens.

I already wrote this before in another comment. Basic Attention Token is not a secure cryptographic system. The idea to pay tokens for shown ads cannot be cryptographically secure. There is no known way to have a cryptographically strong "Proof-of-Watch". All that browser does is, when a user watches an ad, it communicates to its backend and asks the backend to send a token to an address attached to the user. It's not a cryptographic system that mines coins by showing ads.

It's a useless gimmick that has nothing to do with cryptocurrency. The real coins are so valuable because they are cryptographically strong. This thing is centralized and its mechanism of payments for ad views is not cryptographically strong. The token has some value only because of peoples' stupidity.

<comment><USER7> There seems to be some confusion here; users aren't paid for watching ads in Brave. When an ad notification has been delivered, the user is paid. There's a subtle difference there. Brave (because it is the browser) is able to determine when an ad has been displayed, better than any JavaScript-based client that exists today on the Web. Presently, ads are only shown as desktop notifications (no publisher ads at this time). When the notification is registered, your end-of-month payout increases.

Judging by your choice of words, I assume you're a proponent of using Bitcoin. We did this, originally. Unfortunately, Bitcoin was at that time experiencing serious issues with network congestion and large fees. Our users (who only with to buy $5 or $10 at a time) would often have to pay nearly as much in fees. That clearly isn't sustainable. Introducing BAT (on the Ethereum blockchain) meant we had a faster, more reliable system. It also meant the creation of the User Growth Pool, a reservoir of 300 million tokens that could be gifted to early users to raise this novel apparatus off the ground (and it has been working wonderfully at that).

If there are any questions I can answer for you, I'd be happy to chat further.

<comment><USER8> I applaud all of the privacy efforts by Brave so far. Can you say what the long term business plan is for Brave? At some point you have to monetize it to make it sustainable. Is this where the crypto coin mentioned here comes into play? If so will there be an alternative subscription-based model?

</comment></comment></comment></comment><comment><USER9> The whitelist based approach seems pretty limiting, doesn't it? If every exit node is expected to enumerate the domains it will carry traffic to, what happens if a client needs to connect to a new site? Are exit nodes intended to keep massive, curated whitelists?

Something isn't adding up, to me. If the assumption is that all "good" sites _can_ be enumerated, then wouldn't Tor (or other systems) exit nodes already be capable of blocking CP?

Someone connect the dots for me....

<comment><USER10> The CP, Drug markets etc on Tor is typically on hidden services, not on the clearweb.

The whitelist approach may work similarly to adblocker lists, where you say "I trust Jim's List Of Friendly Websites". I don't know how good it is for performance though.

<comment><USER2> Obviously you can do a block for *.onion. But suppose someone searches up "how to make a [insert bad thing]" or something else inappropriate on something as simple as Google. It'd be somewhat hard to block all urls from Google or DDG that contain some text (not to mention that I've heard that people who are in this business use acronyms or other slang... which to the general user (like me) probably won't know.

Don't want to take that risk.

<comment><USER10> I believe the blocking is done on a domain/host level, so you'd block google.com in that case. That's likely not required, because google.com is generally thought to be okay, but you are correct that even that may be problematic. If your IP has searched for "$governmentBuilding blueprints" and there's a bomb planted at that building a week later, you could become a person of interest (provided that Google saves the ip for queries).

Blocking *.onion on the other hand wouldn't be necessary from a "legal protection" standpoint: hidden services don't see the original IP of the client.

<comment><USER11> Google knows IPs are shared and track on L7, they know Tor, NAT, CGNAT. So I'd wager if you share access to Google via Tor you'd get issues with Google quite quickly if not logged in and easily L7 traceable, in form of captchas and blocks everywhere.

</comment></comment></comment></comment></comment><comment><USER12> One step further that Ive prototyped is Encrypted and Distributed Search. The VPN relays willing to take the traffic can also double as Web crawlers. The vpn clients encrypt their search terms and vpn relays encrypt their search indexes, and perform ElGamal Homomorphic private set intersection with MINHASH in Elliptic Curve Field. This leads to better then key word, worse then current age context search from google but with Strong Elliptic Curve privacy guarantees.

<comment><USER13> To make this type of search higher precision&recall you would have to focus especially on the indexing part (e.g. improve NLU of concepts in the pages), right? The training of such ML models could be federated across the nodes in a private way.

<comment><USER12> Indexing is important for sure. The problem is to preserve privacy and not falling back to heavy weight general purpose Multi-party computation we have to give up a bit on the precision and recall of modern search engines. Minhash, more specifically Locality Sensitive Hashing (LSH) is a good first approximation (Better then Term Freqency, worse them ML based search). Right now much of the web is unqueryable, my first goal was to allow the deep web and TOR services to be searched even at just a rudimentary level.

</comment></comment></comment><comment><USER14> Using zero-knowledge proofs to get around the "I don't want to carry <content- I-dont-like>" barrier to entry of distributed relay tech, is really very clever. The performance sounds like it might suck though.

</comment><comment><USER15> Why not Tor? Providing more bandwidth to that network seems the most advantageous option. You also get stronger privacy guarantees.

<comment><USER16> They explain that in the first paragraph or so.

This allows edit nodes to decide what types of content will be routed to their node.

<comment><USER15> And opens the network to abuses Tor was meant to protect against. If proof-of- destination is built into the network then that is a huge step towards invalidating the main benefit of using a VPN -- you don't want someone (your local authority) knowing where you've been. Current VPNs sort-of work by not being in your local jurisdiction. Decentralizing it makes it easier to attack.

<comment><USER17> It uses zero knowledge proofs, so it doesn't really give anyone on the way proof-of-destination.

<comment><USER15> You have proof that someone visited a specific site because it uses a value derived from that site's SSL cert. You just don't have any more knowledge than that.

<comment><USER17> No.. You wouldn't need a ZKP for that.

From the paper:

> Note that such a proof is not straightforward. We firstly prove that a > ciphertext, CS N I , is the result of an encryption without disclosing the > public key nor the plaintext. This causes the highest overhead in our > construction. We use the construction presented in [7] for this purpose.

> Then we need to link the public key encrypted in clause two, with the one > used in clause one. For this we use a proof that two commitments hide the > same secret [5].

> Finally the third clause can be openly computed by A given that it received > the public key from R.

> _Using this, S can convince A that the tunnel created is to a domain that > the latter considers valid, without disclosing which one._

</comment></comment></comment></comment></comment></comment><comment><USER18> >we noted that existing dVPN designs fail to provide strong privacy guarantees...their decentralized nature requires strong guarantees on the traffic a dVPN node carries without violating a user's privacy, at any time.

I suggest looking into the Loki project [https://loki.network/](https://loki.network/)

I'm not completely sure how these two efforts compare, but Lokinet is essentially a more privacy protecting version of Tor.

</comment><comment><USER19> Is there an open source version or something of this? I had similar ideas and this is something I would have liked to contribute to.

I was thinking of approaching the white listing problem by whitelisting users, I. E. I share my node with friends I trust, and that gets propagated through the network depending on trust levels.

<comment><USER20> Isn't Brave open source?

</comment></comment><comment><USER21> This is the sort of feature that could get me using Brave instead of Firefox. Great job by those guys, I've been wanting something like this for a while now!

<comment><USER22> Same here, now I'm interested in brave. I wonder what kind of cool thing they'll come out with next.

</comment></comment><comment><USER3> This is not a new idea. Hola has been around for years.

Trying to protect users through access control is foolish. It's like running a Tor exit from home.

<comment><USER23> I guess it's a bit different for two reasons:

1) Here users are using the bandwidth and it's not resold to companies like Hola does is with [https://luminati.io](https://luminati.io). At least for now.

2) They whitelist domains, so they could only whitelist example.com and you know it's not like Tor where everything goes or Hola where someone is web scraping things through your IP.

<comment><USER3> True, nothing like Luminati, I gather.

But the very idea of sharing my uplink is anathema. Maybe if everyone curated their own whitelists. But once people rely on whitelists from "trusted" peers, all bets are off.

A safer alternative would have users sharing access to each others VPN service connections. That would at least insulate users somewhat from malicious/illegal traffic routed through them.

Indeed, I routinely route traffic through nested chains of 3-5 VPN services. A common criticism is the cost of multiple accounts. And I typically have even more accounts at any given time, for variety.

But if a bunch of people pooled access to their VPN services, or to VPNs that they ran privately on anonymously leased VPS, each one could have a much larger variety of VPN paths and exit IPs. And you could multiplex and split traffic through the VPN network, to increase anonymity. Or aggregate links, using MPTCP, to increase throughput. And you could even implement something like Tor's process of switching circuits every 10 minutes.

I bet that I could implement a simple version of that with routing tables and iptables rules. And some shell scripts. Perhaps with network namespaces, for a little more security. Even Docker, maybe.

But not just sharing ISP uplinks. That will end in tears.

</comment></comment></comment><comment><USER24> (I am technically involved in a project called Orchid that would be considered a direct competitor to this idea, were this idea a product; but I would like to think my cynicism isn't related to that ;P.)

So, a more complete--and somewhat more balanced--description of this is in the actual paper, for which this is just a blog post summary; I would think the paper is way more valuable than this blog post, and maybe should even be the Hacker News post target.

[https://arxiv.org/abs/1910.00159](https://arxiv.org/abs/1910.00159)

First off, the DHT here is unlikely to scale well to large whitelists; yet, for small whitelists, you will (of course) end up knowing the target domain to high probability--which, even for large whitelists, is going to be possible given just the target IP address almost all of the time anyway: even with a CDN, the set of websites you get overlapped with tends to not be extremely large; and, even when it is, it is almost always with a bunch of niche websites that are unlikely to be on your whitelist--so, the premise that this is all hiding from the exit node who you are connecting to is extremely weak.

Oh: and when it _does_ even sort of work with the CDN (due to having the shared endpoint), the user can usually then use domain fronting to trick the SNI, which would bypass this proof and let you connect to any other website behind that IP address; so, really, the way they are doing whitelists is just wrong: the IP address you are connecting to and the totality of what is behind it is way more important than the SNI. Essentially, while you _can_ do this (prove, in zero knowledge, the SNI of an HTTPS connection), it doesn't seem like it really helps a real-world problem (as the situations where the technique works correlate with situations where you failed to hide anything).

Meanwhile, this paper admits to taking 10-30 seconds _per HTTPS connection_ (not per VPN tunnel!) as the DHT lookups and zero knowledge proofs are both slow operations. Somehow, before that completes, it sounds like you just get to use a different node to send "unauthorized traffic"? Why can't I just sit in that regime forever? I am hoping I just don't understand this part, but they say it multiple times as if it isn't such a big deal, and have a bunch of space dedicated to trying to make it sound like the unauthorized traffic would be a small portion of the total traffic (which doesn't exactly sound comforting).

And finally, domain whitelists don't work in the first place: I can post horrible things that get you in trouble to the comments section of a news site (their best example of a kind of website you might whitelist) quite easily; and, for their example of Facebook, it is actively dangerous: Facebook is an entire Internet unto itself that proactively scans for evil things, and so if you whitelist that you are essentially admitting "I would be willing to let you do anything". I could see a URL-based whitelist potentially having value, but not a domain-based one. We shouldn't be making users feel safer with systems that don't even slightly help :(.

(It is maybe also worth reminding that before the advent of encrypted SNI, this data could easily have been used to filter and whitelist traffic... and yet people working on projects like Tor still don't use it for filtering, as it just isn't enough, as you still don't know what the user is _doing_. It frankly just feels likely to me that the two goals that people want to simultaneously achieve here--"I don't know exactly what you are doing" and "I _do_ know, to some reasonably high certainty, that you aren't doing something that would harm me"\--are simply philosophically incompatible without some form of reputation/trust... which then makes achieving a third goal that people want--"I don't know who you are"\--much harder.)

Regardless, back to the paper itself, I would argue that this is a single maybe-novel idea--that you can do a zero knowledge proof over the SNI packet of a TLS 1.3 connection with encrypted SNI--that is, as is common in academic papers, trying to be described in the context of a full-scale solution by surrounding it with the minimally-viable wrapper required to turn it into a product for an under-specified use case and then trying to type quickly past the serious downsides (such as the latency), all without being extremely critical of whether the idea itself is useful.

</comment><comment><USER25> This idea of a dVPN based on cryptocurrency is not new, see for example sentinel, mysterium or privatix.

</comment><comment><USER26> How about sharing blacklists instead? Whitelisting sounds like a performance bottleneck

</comment><comment><USER27> How do you say VPN⁰ out loud? Would be good to clarify that in the opening paragraph.

<comment><USER28> 'one'

<comment><USER29> Why?

<comment><USER30> I came here to make this joke. Basically, any number taken to the zeroth power is 1.

<comment><USER29> Thanks for taking the time to explain!

</comment></comment></comment></comment></comment><comment><USER31> subscribing to shared lists like we do now with adblock but for exit capabilties would work very well. I think an auto meshing VPN system like Tinc or N2N would be better for the network too

</comment><comment><USER32> Does it support OpenVPN?

</comment><comment><USER33> How is it different from Cloudflares 22.214.171.124?

<comment><USER34> They have nothing in common. Cloudflare's 18.104.22.168 is a DNS resolver.

<comment><USER23> It's a VPN now: [https://blog.cloudflare.com/1111-warp-better- vpn/](https://blog.cloudflare.com/1111-warp-better-vpn/)

<comment><USER35> It's like a half VPN, [https://blog.cloudflare.com/announcing-warp- plus/](https://blog.cloudflare.com/announcing-warp-plus/) see "What WARP Is Not"</comment></comment></comment></comment>


Apple Has Spent 100 Million+ Dollars On Android War - <AUTHOR> http://www.gizmocrazed.com/2012/01/apple-android-war-100-million/

<comment><USER2> Less than 1% of their profit this quarter, and even less than that when spread over the ~4 years they've been in the phone business. Sounds like a relatively small investment if it helps them to keep a competitive edge.</comment>


Sir David Attenborough warns things will only get worse  - <AUTHOR> http://www.theguardian.com/tv-and-radio/2013/sep/10/david-attenborough-human-evolution-stopped <comment><USER2> > Attenborough said he was not optimistic about the future and 'things are > going to get worse'."

How right he is. The Logistic function says mathematically what Sir Richard says with words:

[http://en.wikipedia.org/wiki/Logistic_function](http://en.wikipedia.org/wiki/Logistic_function)

In the beginning, at the left, the logistic function (a way to mathematically describe the evolution of a biological colony) shows a species struggling against having too few members. In the end, at the right, the function shows a species struggling against having too many. We humans are at the right-hand end of the curve.

But the risk in speaking out about this issue is that sensitive, intelligent people will listen and reduce their numbers, while less sensitive, less intelligent people won't. The result will be fewer sensitive, intelligent people in Earth's future. That, by the way, is an idea I call the "Population Paradox":

[http://arachnoid.com/evolution/index.html#The_Population_Par...](http://arachnoid.com/evolution/index.html#The_Population_Paradox)

<comment><USER3> > We humans are at the right-hand end of the curve.

Do you have any proof to that? Judging by the amount of unfarmed land available on Earth it looks like number humans is nowhere close to being "too many".

> "Population Paradox"

There is no paradox here. It's survival of the fittest in its purest form. If increasing reproductive desire is a key to species survival, then species with stronger reproductive desire would survive. If you don't care about reproduction much - your genes are less likely to survive.

</comment></comment><comment><USER4> Worst idea ever. It would simply ensure that the people who give a damn will breed themselves out of existence, thereby ensuring that the world is inherited by the clueless and irresponsible.

<comment><USER5> It would be the plot of Idiocracy playing out in front of our eyes.

</comment></comment><comment><USER6> Don't worry, nature will always balance population.

If men try to do it, it's called EUGENICS and it's immoral.

I'm very disappointed Attenborough joined the eugenics club of Ted Turner, Oprah Winfrey, Warren Buffett, George Soros, Eli Broad, Bill Gates, Rockefeller and .. Adolf Hitler.

These people want population reduction: why don't they start with themselves ???

<comment><USER7> "If men try to do it, it's called EUGENICS and it's immoral"

No it really isn't. Eugenics describes selective breeding to remove or increase certain genetic traits. It has nothing to do with controlling population sizes as a whole.

"I'm very disappointed Attenborough joined the eugenics club of Ted Turner, Oprah Winfrey, Warren Buffett, George Soros, Eli Broad, Bill Gates, Rockefeller and .. Adolf Hitler."

Pathetic... and also wrong since none of those people except Hitler actually practiced EUGENICS

"These people want population reduction: why don't they start with themselves ???"

As if the Hitler association wasn't enough you further lower yourself to arguing 'ad Hominem'. Wether these people are hypocrites or not does not adds nothing to the argument. And to my knowledge Oprah has no kids and David Attenborough and Warren Buffer have 2.</comment></comment>


Alternative search engines to Google? - <AUTHOR>

What are the best search engine alternatives to Google? I've tried various options including DDG, Bing (was trying to keep an open mind...) and most recently Yandex. Of the three I've found Yandex to give the best result for my purposes. Which search engines have you tried, and which one(s) gave you the best results? <comment><USER2> May I ask what you did not like about Bing? I've found Google's results better in the past, but Bing certainly to be competent and in some instances superior. There's duckduckgo but my experience has been that its index is simply too small for some requests, although it's been a while since I last used it. Its emphasis on privacy is nice though.

<comment><AUTHOR> The search results of Bing seemed very similar to DDG. It seemed to do a mediocre job if figuring out the context of my search. Google seemed to figure out the question behind my query. With Bing the results seemed to feel more like a regular text search where it matched the words I was searching for to semi-random websites. Perhaps google has so much search traffic and they check which links people click on for different searches, so they are able to adapt to put more useful results closer to the top for a given query over time.

<comment><USER2> Interesting, what are some example queries that we can try on the Bing vs Google challenge that will highlight this? ([http://www.bingiton.com](http://www.bingiton.com))

<comment><AUTHOR> It was a few months ago so I can't remember the queries. I tried a few to compare now and didn't notice much difference between the two with the examples I tested with.

</comment></comment></comment></comment><comment><USER3> I like [https://startpage.com](https://startpage.com) Google results without Google tracking.

<comment><USER4> The disadvantage: You're still funding Google b/c StartPage sells their ads.

</comment></comment><comment><USER5> you can try Baidu.com-a chinese search engine. It is mostly used in China and Japan. The most interesting thing about this search engine is that it is the second most usable search engine according to alexa database.</comment>


Ask HN: How much would you be willing to pay each day to stop/reverse aging? - <AUTHOR> <comment><USER2> It depends on the conditions.

If it's a painful process that requires I stay strapped to a machine forever, I'd pay nothing. If it's a single pill with no harmful side-effects, you can have my firstborn if I ever change my mind about having children.

If you have the technology, you may be on your way to becoming the first trillionaire[0].

This was a curious question to come across, as I was just rereading about turritopsis dohrnii, the immortal jellyfish[1].

[0]: [https://news.ycombinator.com/item?id=21509617](https://news.ycombinator.com/item?id=21509617)

[1]: [https://en.wikipedia.org/wiki/Turritopsis_dohrnii](https://en.wikipedia.org/wiki/Turritopsis_dohrnii)

<comment><AUTHOR> Yes, I started that "trillionaire" thread too.

</comment></comment><comment><USER3> Interesting question. Obviously, a lot would depend upon the details.

But as a first guess, about 10 to 15% of my net income.

<comment><AUTHOR> Only 10/15% ? On what level of net income ?

<comment><USER3> Yes.

From about $100k to maybe $300k. After that I might be able to afford more.

There's no doubt it could be an attractive product (assuming a bunch of stuff about how it works) but as a practical matter, living longer doesn't make me any wealthier, so it'd have to come out of my discretionary spending. While I might not have to save for my retirement due to age, I'd probably prefer not to have to work 50+ hours a week forever, so I'll probably need to save and invest such that I can get a sufficient income to enable me to follow my interests -- some will involve being paid, others might not.

Once I've acquired a house, or perhaps a couple, and have investments providing a post-inflationary, capital-preserving return that I can live off, then I'd likely look to move beyond a basic salaried employment into something more flexible.

But if I still need to pay for my "live forever" pills, there's a limit to what I'd be prepared to fork over on an ongoing basis.</comment></comment></comment>