Salary Negotiation: Make More Money, Be More Valued - <AUTHOR> http://www.kalzumeus.com/2012/01/23/salary-negotiation/ <comment><USER3> Like many others in the comments, I disagree with the whole "Don't be the first to state a number" strategy.

Being weaselly about your number is a very noob thing to do in a negotiation. A skilled negotiator will seize on this and anchor the negotiations in at a very low rate. You need to know your number ahead of time, and drop it on them like it's the most natural thing in the world.

Your initial offer should be high but not ridiculous. (Unless you really are _that_ busy with work and you don't want the job anyway, then give them a ridiculous number, and see what they say. Sometimes they'll say yes anyway).

The number could be 2x whatever you make currently, or 2x whatever you think they will pay, but the important thing is that it's high, and you say it with confidence and act like it's reasonable. It's far better to work your way down from (your) high number, than up from (their) low number.

<comment><USER4> I'm curious how this should all work when working with a recruiter.

I've come across a number of interesting positions that are available only through these guys. But we never get 15 minutes into a conversation before they're asking about salary history. The implied message is that the number you give is going to decide if your resume gets passed onward or not. So going too high, say 2X, would certainly kill your chances.

I've tried the "let's get to a fit before negotiating salary" and I actually had one recruiter say "sorry, this is how we roll". I dumped that guy, but it keeps coming up.

I know the OP's advice was to avoid this route and get to the hiring manager. Just curious what to do about these people.

<comment><USER3> You don't really negotiate with a recruiter, in that sense. When they are asking you your salary information, it's not negotiation, it's fishing for information -- they want to know whether continuing the conversation is a waste of time or not.

Recruiters can be useful because they should know the upper salary bound for the position that they are trying to fill. Just ask them directly how high the client can go, and they'll probably volunteer this information. Act underwhelmed and ask for a little more (or end the conversation there if it's seems like a waste of time). The recruiter will go back to whatever HR manager and either get a "yes there's some flexibility" or "no it's set in stone".

Most recruiters are the "putting warm bodies in front of desks" kind. This kind of recruiter doesn't really give a crap about you or the client, they just want to make the deal, but a high salary for you works out well for them also. Filling positions this way can be a sign that the client is desperate.

There is another kind of recruiter that doesn't work this way. They're rare and they only do talent search for hard-to-fill executive and consulting positions. They are more about building networks and relationships.

<comment><USER4> What really threw up the red flag for me was that he didn't want to only know what I earned at my current position, but the 3-4 previous positions before that, including my reasons for leaving each job.

I can understand he wants to find A-type winners that are on a rising arc instead of slumming for a job, but that took a lot of balls to ask.

<comment><USER5> What's he recruiting for? Banks and jobs that require security clearance often require this sort of background info.

<comment><USER4> High-frequency trading firm. I didn't think that needed bank-level clearance either, but maybe the hiring firm stayed on the cautious side of background checks.

</comment></comment></comment></comment></comment></comment><comment><USER6> One thing I often find in salary negotiation advice are lines that go like this "At my last company, I increased sales by 3% by $YADDA_YADDA".

The thing is that I can't really think of nice metrics like this, and am surprised that a lot of engineers would find something as significant as sales numbers.

For one thing, the further your metric is from strict revenue, the harder it is to put a price tag on it. A sales number is easy, but if you optimized some part of the code somewhere, it becomes much more fuzzy and longer to explain. Sure, Patrick also pushes people to get jobs were your contribution is more directly correlated to revenues, but not everyone will want a job like that, and until you do get one, you can't use that.

The other thing is that I feel it's easier to consider a sales person as directly responsible for a significant increase in revenue for their market. But engineers work in teams, so saying "I increased sales by x%" is hard to justify: what about the Product Manager that spec'ed it out? What about the rest of the engineering team that worked on that change, reviewed it, pushed it to production? If you're the only one doing all that, sure, but that's rarely the case.

So, what's a good way to come up with relevant, justified metrics like that?

<comment><USER7> Coming from academia, where we don't make money, we spend money, I wondered this too. I can come up with a badass Monte Carlo algorithm that does our computation in half the time, but there's absolutely no way to connect this to any monetary value because the end product isn't about money.

<comment><USER8> Vis-a-vis your institution, get good at grant writing. You don't make money in academia by doing research, you make money by doing grant proposals.

Vis-a-vis the funding agencies, they generally have a set of concerns which are non-monetary, too, so meet them where they are.

<comment><USER7> I meant coming from an academic job to a non-academic one. I'm doing well on the grant front, but I don't think that'll help me in getting a "normal" job.

<comment><USER9> There are three main ways for people to show their business value:

1\. Absolute ability to add $ to the bottom line

2\. Relative ability compared to others

3\. Absolute technical skills

Academics transitioning to business do well focusing on 2 and 3, especially 2. If you show me that you were the top 1% of the top 1%, I'm going to be impressed.

One quick concrete example: a friend of mine got the top scholarship for graduate students at her school. This was worth maybe $7,000-not a huge amount in business terms. But it marked her as one of the two best out of 10,000 graduate students.

Most people would just put the name of the grant, but what's impressive is the fact that only .05% of applicants got the grant. Once she put that as the first line on her resume, she got significantly more call-backs.

</comment></comment></comment></comment></comment><comment><USER10> The suggestion to not give a number first is awful. You may not want to give your previous salary history, but you most certainly do want to give the first number. You should do your research and figure out what the company usually pays for someone of your experience (checkout glassdoor.com or ask around) and state a number that is on the very high end of reasonable. It is always easier to try and stand your ground than fight your way uphill from a low offer.

The only case you might not want to state the first number is if you can't find our what the company typically pays.

<comment><USER11> Scientific research agrees with you. The concept is called _anchoring_

 _Anchoring research helps clarify the question of whether to make the first offer in a negotiation: by making the first offer, you will anchor the negotiation in your favor. In fact, Mussweiler and I have shown that making the first offer affords a bargaining advantage. In our studies, we found that the final outcome of a negotiation is affected by whether the buyer or the seller makes the first offer. Specifically, when a seller makes the first offer, the final settlement price tends to be higher than when the buyer makes the first offer._

<http://hbswk.hbs.edu/archive/4302.html>

<http://en.wikipedia.org/wiki/Anchoring>

The whole article could use a lot more science. I suggest reading "59 Seconds" from Richard Wiseman.

<comment><USER12> I was under the impression that putting out the first number anchors the negotiation _around that number_ , not necessarily in one's favor. For example, if you think you want to earn 100k, and they were hoping to keep you under 125k, throwing out a number of $110k is not giving you the advantage, as they may have thrown out a first number of $115k if you had let them.

<comment><USER13> This is more reason to research the company's salaries up front. If they were planning to lowball you and you put out a high number, it may help you, but if you don't know anything about the company, it may be more beneficial to let them make the first move (unless you have multiple options open and are willing to say a high number).

<comment><USER14> the problem is that salaries aren't uniform for all companies.

so if you go by glassdoor, you'll see that some engineers make $40K/yr, while others make $150K/yr in the same area.

If you go by listed salaries on job descriptoins, once again on monster.com you might see jobs posted at $100-150K/yr...while others, for pretty much the same exact requirement list/job description you'll see $50K

The good thing though, is that if you ask for more than they can afford, they'll almost always tell you their real number. So just ask for 1/3 more, i.e. if you want 90K, ask for $120K, then watch them come up with a 100-110K counter offer....and who knows, you might just get that $120K

</comment></comment></comment></comment></comment><comment><USER15> Honestly, my top advice for negotiating better: interview _lots_ and never feel like if you don't take this job, you won't get a better one. The techniques are important. But if you don't have a solid foundation in any negotiation(options and leverage), you're fighting an uphill battle.

As it stands, patio11's advice seems to be more applicable to people who have very few job options. I'd argue most people on HN would have multiple options, even if they are shy about activating them(by applying/interviewing).

<comment><USER16> > interview lots and never feel like if you don't take this job, you won't get > a better one

Right. One thing my dad taught me is that if they want to sell it more than you want to buy it (or vice versa), you win. If you're feeling insecure about your value, I'd say that matters a lot more than, say, who throws out a number first.

</comment></comment><comment><USER17> While I don't agree with all of the article's advice, it gets the most fundamental point right: Stop feeling guilty about asking for market compensation.

Being a nice person has nothing to do with it. It's _not your fault_ that you're worth more than they're offering out of the gate. It's _the market's fault_.

Good luck out there.

<comment><USER18> To get what you're worth, you should actually ask for more. The other one will assume you did and try to bargain you down hard anyway.

<comment><USER17> I have never been in a salary negotiation in which I was bargained down hard, which may mean I'm a terrible person to ask for negotiation advice.

But not _entirely_ , because the "assume the counterparty is a dick" technique is actually kind of pointlessly lossy, even if it works out in aggregate over the market. It's been a long time since I negotiated a salary, but in a few recent contracting scenarios I've just set a price that I knew was fair, stuck to it, and when necessary explained to the prospect _why_ it was fair.

People are either willing to listen to reason or they're not worth dealing with.

<comment><USER18> Actually, that sounds reasonable!

From my experience a good bargainer will always win more then you, but he will often also help you in ways you didn't imagine were possible. Because he is good at finding what is really important to people and how to get things done. If he wants something from you, he will also give you solutions to some of the harder problems you have in exchange. So I don't think a strong bargainer is a dick.

Of course there are people who bargain to trick you. And even normally fair and strong bargainers will sometimes use their powers more to their advantages then they should. But in my eyes it's not the common situation. Between sticking-to-the-first-number and tricking-each-other-out-of-money there is a big range of good and bad bargaining which actually solves the good purpose of finding each others priorities, a good range for the value bargained, and a result both parties can agree to.

</comment></comment></comment></comment><comment><USER19> The best way to avoid saying the salary number is to simply ask the question of them first. In other words: "What salary range does this role warrant in your company?"

That frames the conversation really, really well. For one, if the two ideas are severely mismatched, you don't waste your time. If the number is low, you can make note of it then and explain why you are so much better than that. If the answer is non-committal, you've got a wonderful spot to review the role in detail and "come up with the number together".

If the number is high, you can reset your mid-point and focus more on their "horrible" vacation allowance that they'd need to correct to bring you on. :)

</comment><comment><USER20> "Applicant: Great, I can't wait to get started. Getting me that extra $4,000 would make this a much easier decision. Considering that this is conceivably worth millions to you, we'd be silly not to do business with each other."

I think the problem is that you don't have a verifiable skill that will increase sales by X%... Because if you did, then you'd be silly for only asking for an extra $4000 based off of increasing sales by millions.

<comment><USER21> _I think the problem is that you don't have a verifiable skill that will increase sales by X%... Because if you did, then you'd be silly for only asking for an extra $4000 based off of increasing sales by millions._

I think software engineers can come up with a few skills that makes them more valuable than other applicants by a quantifiable amount. In my case, I have extensive experience with streaming audio and video across web and mobile devices. Having built and maintained the streaming video infrastructure that powers RushLimbaugh.com, JimRome.com, CoastToCoastAM.com, BobAndTom.com as well as their corresponding mobile sites and apps while I worked at ClearChannel, I have the experience to cut months off of similar projects for my current company. That alone was worth the 37.5% increase over my last salary to them.

</comment></comment><comment><USER22> I think a lot of what Patrick does well in this article is "reframing" the situation. I find once you get out of the "I don't want to offend them and lose my shot" mindset, negotiation and other "money talk" becomes really routine.

I wonder if there is value in creating "mock hiring sessions" that require you to negotiate your pay up. There are millions of "mock interviews" done in colleges every year, why not go that extra step? It seems learning to reframe the situation is easy enough to do given the proper coaching.

</comment><comment><USER23> _"If you're sane only about 25% or so of your gross income is subject to the results of real estate negotiations. Close to 100% is subject to the results of salary negotiations. Thus, your salary negotiations are probably going to be the most important financial decisions you will ever make."_

That's pretty irrelevant really, what's relevent is the difference it can make. First, if you negotiate a 20% discount on the 25% you're doing better than negotiating a 1% pay rise for the 100%. Second, a negotiated salary recurrs annually, it's not a one-off sum. So yes the conclusion is right, but for the wrong reason.

<comment><USER24> The 25% he alludes to is your recurring mortgage payment, which also happens annually--monthly, actually. What he means here is that a discount of 5% in your mortgage negotiations is much less than an increase of 5% in your salary. So he is right, for the right reason.

<comment><USER25> corin_ is right - salary is recurring, mortgage/real estate purchase is one- time. You pay off the mortgage with recurring payments, but they are based on the one-time amount. If you negotiate $10k extra salary, after two years you will have $20k extra. If you negotiate $10k lower real estate purchase, after two years you will not have $20k extra. (Technically you will have a little bit more than $10k extra due to compound interest on smaller principal, but nowhere near $20k.)

</comment></comment></comment><comment><USER5> I'm not convinced by this article that the author has ever done a salary negotiation.

<comment> brown9-2 The author offers his services to companies as an independent contractor. I would think a huge amount of that involves rate negotiation.

</comment></comment><comment><USER26> The part about managers thinking less of you because you do not negotiate is completely true. Everybody wants an awesome negotiator under them. Just like if you solve P=NP on the white board on the interview will mark you as the wizard, negotiating will mark you, right from the interview, as someone who fights for what he wants, and will fight for what the project/team/company wants.

<comment><USER27> I upvoted you but I'm not so sure its the negotiation skills that they'll admire as much as the self confidence in your own market value. Sort of "This guy is used to getting paid really well, he must be really good."

</comment></comment><comment><USER28> > _"I received a comment that this is untrue for startups by someone today. > For a funded startup which has enough engineers to warrant a foosball table, > the company payroll is well north of $100,000 a month."_

I'm 90% sure that was in reference to this post: <http://news.ycombinator.com/item?id=3499480>

Our most recent round of funding at the start-up where I'm working was 750k. ([http://techcrunch.com/2011/10/24/smartots- raises-750000-offe...](http://techcrunch.com/2011/10/24/smartots- raises-750000-offers-mobile-apps-platform-for-kids/))

That has to cover _everything_ for about half a year, including developers, artists, lawyers, rent, travel expenses, regulatory costs, etc... And we've made it go pretty far and will likely raise a much larger round in the near future. I'm sure everyone at the company would love to be making more money, especially those who have worked in richer countries. However, even a couple of developers pushing for the kinds of salaries that pattio11 is would mean the start-up burns its cash, the founders lose their invested time and money and worst of all, we don't improve kids' education.

Of course there is always the chance that those two guys have such beastly skills that they can get us market dominance (and profits or a much larger investment) before that happens. Would you take that gamble?

Disclosure: I don't speak for the company, I'm not privy to top level strategy discussions and I don't own any of it or represent it, etc... I do like what we're doing, though.

<comment><USER29> The flipside is that maybe the execs aren't good enough to get the kind of funding necessary to build the company effectively, or that the business idea (beyond "improving kids' education") is not viable in its current implementation path.

<comment><USER28> One of the founders has successfully sold a start-up in China in the past and the CTO has sold 2 in the US. The product fit still isn't 100%, though. The business has gone through a couple of pivots just in the time I've been there.

It should go without saying that _before_ hitting market fit is a terrible time to take on overly mercenary employees. Goal #1 is to survive off of the money long enough to reach that point.

<comment><USER29> Goal #1 should be to get to that point, goal #2 being to be able to pay someone else to do it. Goal #1 only involves paying someone if you can't do it yourself, and if that is so, you have to achieve goal #2 to an extent that it ensures goal #1.

</comment></comment></comment></comment><comment><USER30> I think there are a lot of people disagreeing with "Don't state the number first" but it's important to be open to new ideas.

This article is meant to make you stronger and offer some new tricks in the negotiating process. You're certainly not learning and expanding your game if you're convinced that you don't need to do anything different.

I think its important to think about what the author is really saying: Can you find out what cards their holding before they know what cards you have? Can you? It's tough, its challenging, that's the point.

The more information you have before you start making decision the better decision you're going to make, period. When you start throwing out numbers a very big decision has just been made, theres's no going back at that point.

If you're worried they are going to laugh at you, or be offended, they won't be. This is not a war, it's an interview, a chance to make an introduction and meet somebody new. Sometimes you can make connections in the interview even if you end up not taking the job. You're dealing with people, not robots. No one is out to get you. In fact, they're considering hiring you and working with you everyday!

The point is learn new tricks and push back a little.

<comment><USER31> Interesting point. Also, it really helps to somehow weasel/tap your way into the hiring side. ;) Even if it's just to see the submissions of applicants.

An important principle of negotiation is knowing their interests as well as you can. And presenting a representation of yourself which strongly satisfies those interests.

Basically, all the work is done before the negotiation; the point of negotiation is where it all comes together and you use all that pressure you've built up to (politely) bear.

If you have a take-home project, great, you can hit it out of the ballpark by adding all the professional polish that virtually no other applicant will do — have it build, solve corner cases, or casually note that it was tested on 3 platforms; whatever's vaguely appropriate. Virtually everyone else cuts some corner somewhere. Most will submit a minimal answer, to a question which resembles — but isn't — the take-home question.

To the company struggling to find a good coder, this makes you a drool-worthy thing to purchase, like the newest Mac. They will calculate what they're losing in not having your increment of productivity, and that will pressure their decision.

(That said, I prefer to state the number first as an anchor, because I research relevant salaries, but whatever. ;)

</comment></comment><comment><USER32> patio11 draws some content from his original "Don't Call Yourself A Programmer, And Other Career Advice"[1] which you should _definitely_ read.

[1] [http://old.kalzumeus.com/2011/10/28/dont-call-yourself-a- pro...](http://old.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/)

</comment><comment><USER33> I think these discussion tend to get a lot of people debating on who should offer a # first.

I don't think this is a question with a binary answer. Statistically, you may be able to determine which works better as a whole, but nobody will negotiate their salary enough times to render a proper sample. I'd guess that treating each salary negotiation uniquely will produce a higher mean salary than simply changing the "who says $ first" variable.

</comment><comment><USER34> Any tips specifically for negotiating a higher raise? Most of the advice is targeted to the "new job"-salary negotiations.

<comment><USER8> Get attached to the part of the company that makes money, set up the measuring and politics such that you get credit for increases in the amount of money they're making, pitch a raise for you as the easiest way for them to get a repeat performance in the next quarter. Also, since companies have persistent exploitable inefficiencies about this issue, be prepared to talk to the people who are actually willing to give you a raise. (i.e. it may not be the people you currently work for.)

</comment></comment><comment><USER35> In your guys' experience, how relevant are these tips to someone speaking with relatively young startups (say, seed or Series A stage)? I know that good negotiation skills are good negotiation skills however you slice it, but I'm curious to hear from folks if they've needed to use a different set of tactics when not dealing with an "HR department" as much as a founder.

</comment><comment><USER36> @patio11 Thanks for writing such a detailed blog on this.

As I read your rephrasing of questions, I remembered reading this book "In the line of fire" by Jerry Weissman. There is a concept explained in this called "Roman Column".

The key message is: Do not answer the question till you fully comprehend the roman column i.e., the key issue. You can get to your own interpretation of roman column or ask the person to clarify the question to understand better. Then paraphrase the question and address the issue head-on focussing on the roman column.

I found the book to be very interesting with lot of real examples about press meets & other negotiations.

</comment><comment><USER37> I'll just say be careful when taking free negotiation advice from professional writers rather than professional negotiators..That's not to take anything away from patio11 here, just be careful and keep the salt handy.

</comment><comment><USER38> Details of strategy sure are important, but, above all, _do_ negotiate.

A comment† by <http://news.ycombinator.com/user?id=jfoster> that really opened my eyes:

 _> You might also look at it another way, and Google probably will, too. If you're being considered by Google and you don't negotiate, perhaps they are the ones making the mistake [by attempting to hire you]._

† <http://news.ycombinator.com/item?id=3496512>

</comment><comment><USER39> All negotiations need to end with both parties thinking they are winners. In that spirit, you need to give a number (high-end) (so called anchoring) so that other party can feel good when they convince you for less.

Also, other things (i.e., vacations first 6 months, or some small perks) mention only after you negotiated the salary and pretty much you close the deal.

<comment><USER40> I've never understood advice that talks about negotiating fringe benefits like vacation time. At best, company policy will prevent those terms from being negotiated because they're standardized. At worst, you're just going to look like an entitled asshole from day one if you try to get special treatment. I'd much rather make up for it in salary negotiation and take the same deal that your future teammates got.

<comment><USER41> _At best, company policy will prevent those terms from being negotiated because they're standardized._

If you frame your counteroffer as "I would take this job if you gave me $X more base salary or Y more vacation days", then the guy across the table can decide which option is more offensive to company policy. It's not your job, as the applicant, to decide in advance what terms the employer will accept. Your job is to communicate what you want until you either have a deal or feel comfortable walking away from the table.

 _At worst, you're just going to look like an entitled asshole from day one if you try to get special treatment._

Personally, I have better things to do with my time than count up how many days off each of my co-workers have taken and compare them with the numbers in the employee handbook.

</comment></comment></comment><comment><USER42> I always struggle internally with posts like this, or the other one I remember, "Don't Call Yourself a Programmer". To fully follow the advice underpinning these pieces, I would generally risk sacrificing a lot of personal enjoyment in my work in pursuit of money.

I know HN leans strongly towards money whenever money is at hand, but I tend to lean the other way.

<comment><USER43> You are right. Money is the worst motivation for a job. Money is just a small part of salary.

</comment></comment><comment><USER44> This is all kind of obvious, and I boil it down to: if you're moving to a new company, they should pay you more than your current job and any other offers. Ask each company for what you want to make, then let them compete against each other.

The real difficulty I had in the last round was pricing relocation; is $XX in New York better than $XX-10% in Seattle?

<comment><USER45> In my experience, most companies will severely lowball on big relocations and cost of living adjustments. You could be living in the boondocks on $100k a year, where the cost of living is next to nothing. And then you find a roughly equivalent job in NYC, where the cost of living is easily 2X or 3X your current situation. Will the firm in NYC double or treble your salary? Extremely unlikely. Most will simply anchor to your existing salary, with perhaps a very miniscule adjustment for COL.

In these situations, it might make sense to volunteer the first number in the negotiation, and to go high with it. Don't mention your current salary. Just talk about how the cost of living is a big adjustment (be precise about your multiplier, citing a data source), relocation is a big adjustment, etc., so accordingly, $X sounds reasonable. (Where X = the first number you mention; you do not make reference to your starting point before arriving at X. The hiring manager or HR person usually won't work backwards and reverse-engineer your starting point, but rather, will treat X as the anchor. The mere fact of _having_ a rationale leading up to X makes X seem credible).

The other thing I'd say is not to make X a wildly ballsy figure, or to pull it out of thin air. You should have a very realistic reasoning for having arrived at X; it shouldn't be complete bullshit. Giving a number that is wildly off the top end of the pay scale for a position is a sign of naivete, which is often a signal that you're not actually qualified for the position (or that you're overqualified, in which case, why are you applying for this position?). Your anchor X should be somewhere at the high end of what your research tells you is a realistic range for the job in question.

</comment></comment><comment><USER46> There are many people that are not comfortable with negotiation. They see it as a game, and want to avoid it. They would rather just produce something and get paid for it for a living, and cut all the bullshit. For those people, maybe the template below will help (just a suggestion).

1\. Find out what you really like to do (technology or domain-wise etc)

2\. Find out where you break even on your daily/monthly expenses.

3\. Add to that a savings cushion that you are comfortable with. Thats your number.

4\. Find out companies that do 1, and drop that number right away so that they know where you stand.

5\. If company rejects, keep looking.

6\. If the company okays it because they think its well below market rate, and you come to know of it, work for them for a couple of years and then jump ship.

You may have been low-balled for sometime, but you worked on something you liked, and have some experience under your belt to search for other opportunities in the same field.

</comment><comment><USER47> Great advice here, now I want to see something about negotiating a raise within your own company. I could use this information to get huge raises by changing jobs every couple years for the first decade of my career.

But what if I like my job? I want to stay here _and_ negotiate large, fair raises. How?

<comment><USER19> Be willing to leave.

Sounds trite, but it's true. If your employer knows you are never a threat to leave, they will never try to convince you to stay with monetary incentives.

Once you are willing to leave, shop around and "interview" with your employer too. Figure out what the best overall deal is at that point.

<comment><USER48> My friend wanted to move his family across the country. He approached his managers with the proposal that they let him work remote. And, more importantly, he explicitly let them know if they did not accept his proposal that he would resign. He got the remote approval and he says that there was no bluff. He was all-in. If they said "sorry, we cannot do that. Cya", he would have had to resign. Because his creditability would be shot if he said "oh, thanks for considering". He feels he got it because he really was forcing their hand.

</comment></comment></comment><comment><USER49> Always be the first one to give a number. That sets the bar. Let's say your current salary is $100K. You want $130K. You say call the number first, $160K. Now the company is negotiating against that number. If you accept $140K they will perceive it as a win for them.

<comment><USER50> The problem is most engineers significantly under value their worth and so usually offer a low-to-the-company number. There are people working in offices (not as programmers) that don't know zip files. You, as a programmer, can do magic with the magic boxes.

In the long run, it would be better if programmers were better are valuing themselves. In the short run if programmers stopped giving numbers, it'd be better.

</comment></comment><comment><USER51> Thanks Patrick. This was a long time coming.

I can tell you've had quite a personal journey about this topic.

</comment><comment><USER52> For those of you who suck at negotiations and how to go about them, I believe the single best thing you can do is to get more than one employment discussion going at the same time. Then you can be totally honest and open in your negotiations and still maximize the offer made by each company. It is quite difficult to mess it up at that point - you might not get the highest salary possible between the companies, but you will get close to the highest possible salary that at least one of the companies is willing to offer.

</comment><comment><USER53> First let me say that this appears to have plenty of good information and I will definitely read the entire piece.

But I've been stopped right away by this paragraph near the beginning:

"I think that middle class Americans are socialized from a very young age to view negotiation as something that is vaguely disreputable and engaged in only by poor people. Think of the associations you have with the word "haggling": do you think of a successful young professional talking about thousands of dollars in a brightly lit office? No, you probably think of an old woman arguing over a trivial sum of money in a dirty flea market."

Nothing could be further from the truth for people that are, as only a few examples, jewish, indian, asian and I would imagine other immigrant groups.

As a member of one of the above mentioned, it's exactly the opposite. I was raised to think if you don't negotiate you're stupid. And not only that, but if you give someone a price and they don't negotiate so is the other party.

Of course this all depends on the product or service in question obviously as well as the dollar amount.

By the way, negotiation doesn't mean someone giving you a price and you saying "will you take $x". That's something that any good negotiator will recognize as essentially saying you will pay the asking price or maybe you want them to throw you a bone.

</comment><comment><USER54> A friend of mine turned me on to the audio version of this book, "Negotiating Your Salary: How to Make $1000 a Minute" [1], many years ago.

It's more about a mind shift than rocket-science techniques, but I can attest to increasing my income by tens of thousands of dollars by putting its ideas into practice.

[1] [http://www.amazon.com/Negotiating-Your-Salary-Minute- Revised...](http://www.amazon.com/Negotiating-Your-Salary-Minute- Revised/dp/1580083102/ref=dp_ob_title_bk)

</comment><comment><USER55> I'd like to suggest a "comfort challenge" for patio11: apply the principles in this article to increase your stated income ($70,000 [1]) by a factor of three without compromising your quality of life. I bet it can be done.

[1] [http://www.kalzumeus.com/2011/12/21/bingo-card-creator- etc-y...](http://www.kalzumeus.com/2011/12/21/bingo-card-creator-etc-year-in- review-2011/)

</comment><comment><USER41> One question I've been asked, interviewing at startups, is: "how do you feel about cash vs. equity?" For my personal financial needs, this is a no-brainer: cash is king, baby. But other HN readers might be in a position where their market-rate salary is $100K cash but they _could_ see themselves getting by at $75K or even $50K... how should they answer that question?

</comment><comment><USER56> The advice to "never be first to state a number" should really be "never divulge your current/previous salary".

<comment><USER57> This isn't as easy to dodge though, right? Or do people do this routinely?

<comment><USER8> It is not too difficult to dodge questions about current/past salary. We're clear on why you want to do that, right? If you say "My salary at my current job is $65,000", you will receive a job offer at $70,000 +/- $2,000 regardless of whether the company would happily pay $90k for you if they had not known your current salary.

Anyhow, given that, there are numerous options to decline to damage your own negotiating position. My personal favorite is "As a matter of professional courtesy, I decline to comment on the specific policies of past employers. Don't worry, I will treat your confidences with the same level of professionalism when someone asks me about them in a few years."

It is unfalsifiable (as opposed to what people sometimes suggest on HN: "That is under NDA", which is a claim that can actually be a lie), conveys status, and (gently) informs the person you're speaking with that you're aware how the game is played.

<comment><USER57> Dude ... I've said it before (under my real HN account) and will say it again ... you-are-the-man!

I can't believe how stupid I've been all these years :( I'll admit that when recruiters have asked me this question, I've behaved almost like a deer in headlights.

My current job, I accepted the offer as is. THEN asked them if they had any salary negotiation room. Of course, I was told no. I felt like hitting my head against a wall right after that phone call. I won't be that big of an idiot again!

</comment></comment></comment></comment><comment><USER58> <http://salarytutor.com/> this is a pretty good and fast read on the subject with some actionable advice that will help prepare you for the conversation.

</comment><comment><USER59> Speaking of salary negotiations, there is something I always wondered about the US:

What is the difference in "pure" salary vs additional costs to the empolyer?

Things like 401k contributions and benefits (e.g. dental or health) certainly come with a pricetag. Seeing as I'm doing remote work from another country, I'm not sure how much that actually saves the company. The same goes for simple things as not needing office space / electricity / ... which I provide for myself over here (as I'm working from home).

Does anybody have any insight on that?

</comment><comment><USER57> So here's an issue I've faced. Instead of being asked ... what's my number? I've gotten asked .. "what's your salary?" How do you deal with this one?

<comment><USER3> Make something up. It's not like they're going to call your boss and say "Hey we're trying to steal this employee away from you, how much money are you paying him?"

Some exceptions to this: 1. You work a government job where your salary is public knowledge 2. You are unemployed and they _can_ just call your previous employer. 3. You listed your current boss as a reference and they're probably getting a call anyway. 4. You expect that they're going to perform an extensive background check that might uncover your salary anyway.

</comment></comment><comment><USER60> Two good posts on the subject:

[http://hollaforthatdolla.com/2011/discussing-desired- salary-...](http://hollaforthatdolla.com/2011/discussing-desired-salary- during-the-interview-process/)

[http://hollaforthatdolla.com/2011/be-prepared-to-discuss- sal...](http://hollaforthatdolla.com/2011/be-prepared-to-discuss-salary- openly-when-seeking-a-new-opportunity/)

</comment><comment><USER61> Real estate purchases in US are usually highly leveraged, say 5x for a typical purchase with 20% down.

So, negotiating those will have proportionally larger impact than immediate cashflow changes suggest.

The article incorrectly suggests otherwise which detracts from its authority.

</comment><comment><USER62> I think the people who has the right to negotiate is the one who has the skill to do the job being offered. Because you know your capability, definitely, you should know what is your value in the market.

Anyway, article is interesting.

</comment><comment><USER63> Jut like everything in life, confidence is key. You gain confidence through experience. Try, fail, try again. Little tricks like not being the first to say a number is about as useful as pickup lines are for dating.

</comment><comment><USER64> Random note on the site theme: This detail looks horrible, adding unnecessary high frequency contrast when selected: body { text-shadow: white 0px 1px 0px; }

</comment><comment><USER65> Can anyone say how applicable these suggestions are to getting internships while still in college?

<comment><USER66> I'm currently working at my first internship where I negotiated a ridiculous lowball into a substantial lowball. I didn't have any other offers on the table and was worried that I wouldn't get anything, so I settled. I think my point is that it won't hurt to ask.

I later found out that I wouldn't be an employee, but a 1099 contractor responsible for all my taxes, making the rate even lower than I initially thought. Needless to say, they will have to more than double my hourly rate when summer comes for me to stay.

</comment></comment><comment><USER67> Any advice for negotiating over email if you don't receive an offer until after the interview?

</comment><comment><USER27> "What's it going to take to get you into a top of the line Engineer today?"

</comment><comment><USER68> Anyone want to give a TL;DR explanation?

</comment><comment><USER69> how do you negotiate equity?

</comment><comment><USER70> Author drew numbers from thin air resulting in horrible advice.

Throw in - "For a funded startup which has enough engineers to warrant a foosball table, the company payroll is well north of $100,000 a month." - <USER2> still require that employees provide their own hardware/software to do the job.

</comment><comment><USER71> Key: never tell them your salary. Then, be the first to give the number at 2X your current salary. Then come down a little eg, 5-10% lower then 2X.

Get a bunch of offers, let them bid it even higher.</comment>


Rising numbers of criminals are using Facebook Live to document their acts - <AUTHOR> https://www.theguardian.com/technology/2017/jan/27/rising-numbers-of-criminals-are-using-facebook-to-document-their-crimes <comment><USER2> 'This week three men have been arrested in Sweden on _suspicion_ of raping a woman in an apartment in Uppsala, about an hour north of Stockholm. It wasn't difficult for the police to find the suspects because they broadcast the _alleged_ assault on Facebook Live.'

Why do they still use those words when the entire point of the article is that they filmed themselves doing it?

<comment><USER3> Because until it's proven in a court of law, it's appropriate to do so.</comment></comment>


Show HN: Saver (Chrome extension) – save LinkedIn profiles/arXiv papers online - <AUTHOR> https://www.youtube.com/watch?v=k94_xMtR0rQ&feature=youtu.be <comment><AUTHOR> Just spent a few hours building a Chrome extension that lets you save stuff online (LinkedIn profiles, arXiv papers) into a spreadsheet (Airtable). Thought it might be useful for others so wanted to share it here.

Prob gonna publish on Chrome store, lmk what you think -- thanks!</comment>


Bitmask: an open source app to provide easy and secure encrypted communication - <AUTHOR> https://bitmask.net/

<comment><USER2> I would be sceptical. Does this thing breaks open standards like OpenVPN? I would love an opensource implementation of [http://www.goldenfrog.com/vyprvpn/chameleon](http://www.goldenfrog.com/vyprvpn/chameleon) which works in China and also prevents Deep Packet Inspection. And about VPN: VPNs can also be a single point of failure for trust. You are giving away trust on your current connection from your ISP to maybe Bitmask/LEAP and a VPN which they call service provider. I also wonder how you want to make the financial side of this working. Running VPNs is expensive. I hope you succeed but I would say: Do not trust any free VPN out there.

<comment><USER3> Bitmask actually uses OpenVPN, just makes easy to use it securely. One summer of code has implemented support for obfsproxy ([https://www.torproject.org/projects/obfsproxy.html.en](https://www.torproject.org/projects/obfsproxy.html.en)), that hopefully will solve the problem in places like China.

Bitmask doesn't want to provide a proper VPN service, for the moment there is a demo service to try it. But the idea is to provide all the software easy to set up for providers, and the providers will charge you for it to sustain themselves. The nice thing of this model is that the provider only provides the service but your client comes from an independent organization, your provider can not put back doors on it.

The trust is a hard problem, we are moving the trust from the ISP to your provider ([https://leap.se/en/doc/platform](https://leap.se/en/doc/platform)). Your ISP is something that you can not choose much, but on the provider you can choose or set up your own ([https://leap.se/en/doc/platform](https://leap.se/en/doc/platform)).

</comment></comment><comment><USER4> Encrypted E-Mail is not the problem, there already are packages that install gpg without any hassle. What must be solved is the problem of which keys to trust. The web of trust just doesn't work. Are there any concepts how to solve this with Bitmask?

<comment><USER3> The key distribution is the actual problem that bitmask try to address ([https://leap.se/en/docs/tech/hard- problems](https://leap.se/en/docs/tech/hard-problems)), it tries to make transparent the key discovery but keeping it as secure as possible. But this is still a work in progress.

</comment></comment><comment> TD-Linux So, this is a VPN client? I find it odd that it only supports Linux and Android, considering that these two platforms already have built in and fully functional VPN clients.

<comment><USER3> Other platform support on working, but this is just a beta.

OpenVPN is hard to use by non-hackers and complicated to configure well, too easy to have DNS or IPv6 leaks. Bitmask makes all that easy.

<comment><USER5> Do you prevent "DNS leaks" by running DNS through the tunnel, or by turning off DNS?

Do you prevent "IPv6 leaks" by running IPv6 through the tunnel, or by turning off IPv6?

And, more interestingly, are these answers consistent?

</comment></comment></comment><comment><USER6> I don't really understand what this is, is it a vpn?

<comment><AUTHOR> In its current beta state, Bitmask boils down to an easy-to-configure, easy- to-use VPN with Linux and Android clients. But it's part of a wider strategy that includes easy-to-deploy providers (using puppet, basically) A bigger picture can be read at [https://leap.se/en/docs/tech](https://leap.se/en/docs/tech).

The demo providers currently offer only VPN, but encrypted email is planned to be released soon.

</comment></comment><comment><USER7> For secure communication we should leave email behind because there's still a lot of metadata when using email.

Bitmessage ([https://bitmessage.org](https://bitmessage.org)) might prove to be a viable solution to the metadata problem.

<comment><USER8> Bitmessage (afaik) works like alt.anonymous.messages, but w/ a bitcoin-like broadcast protocol instead of usenet. Not sure how well this will scale (if we're talking about Bitmessage as an email replacement)</comment></comment>


ZeroMe – Decentralized Microblogging on ZeroNet - <AUTHOR> https://bluishcoder.co.nz/2017/10/12/zerome-decentralized-microblogging-on-zeronet.html <comment><USER3> An off-grid social network | [https://news.ycombinator.com/item?id=14050049](https://news.ycombinator.com/item?id=14050049) (Apr 2017, 366 comments)

[https://www.scuttlebutt.nz/#other- projects](https://www.scuttlebutt.nz/#other-projects)

</comment><comment><USER4> How nice would it be if humanity united together and formed a non-profit organisation like ICANN that would run an IDentity+social network service with ability for people to plugin their extra features (like photo album, blog, things/services they sell etc)... As a central body it can still retain the ability to shutdown ID of non-acceptable content like child porn and dangerous propaganda. I'd happily donate to have such an unbiased body.

<comment><USER5> > As a central body it can still retain the ability to shutdown ID of non- > acceptable content like ...

The problem with that is who gets to choose what is acceptable and what is not? If I make criticisms about something or someone's actions, is that "non- acceptable" content? During these discussions, the lowest common denominator is used, but the reality is that definitions change or people try to expand the definition to include what one does not like or agree with. The price for free speech and expression comes a great price with many risks, but it is worth it. We have seen centralization fail time and time again with platforms like Facebook and Youtube censoring (demonetizing) unfavorable opinions or ideas.

> I'd happily donate to have such an unbiased body.

As soon as you start picking, choosing and expanding what is acceptable and what is not, it is no longer unbiased.

</comment></comment><comment><USER6> I am not very familiar with this project but I see it uses UPnP. Does it rely on UPnP or is it only opportunistic use? If the former, what happens if the user's custom router does not run a UPnP daemon, or if the user prefers to disable UPnP in her consumer router?

<comment><AUTHOR> It does rely on being able to communicate through that port - UPnP is one of the options it uses to ensure it can receive external requests. If you run using the tor option it evades firewalls via tor.

</comment></comment><comment><USER7> It has been really exciting to see ZeroNet grow, we need this!

Curious, does it still use git to push a JSON record change in a large blob to a remote bot that then commits it? Are you working to re-architect this? I'm hoping I can convince you guys to partner up with us, we just got a prototype of end-to-end encrypted P2P data structures working ( [https://youtu.be/ik_dqXBMBHw](https://youtu.be/ik_dqXBMBHw) ) that is storage/network efficient (syncing diffs) and fully decentralized using CRDTs. Shoot me an email (check profile) if you see this. I've been keeping an eye on ZeroNet for the last year or year and a half-ish (?), and really excited about its growth.

<comment><AUTHOR> It does not use git internally - other than for source code control - and it does not push to a remote bot. There used to be a demo app called ZeroBoard that used an external service that it did an HTTP POST too, back in the days when ZeroNet had not other way to do that type of thing. The app is still around but it's superceded by other things.

<comment><USER7> Huh, then how do you handle dynamic content versus pages?

<comment><AUTHOR> I'm not the author of ZeroNet btw, just in case you think I am.

Each site has an area for user content. That is content not generated by the site owner. Users of the site that generate content (posts in a forum or comments on a blog for example) write their content into that area which is a directory for them based on the public key of their pseudo-anonymous identity. The user then signs the data with their private key and this gets sent to other site users through the seeding mechanism. All this is hidden by the API so the user of a site doesn't see the public/private key signing, etc.

</comment></comment></comment></comment><comment><USER8> I love Zeronet project. the only problem I have is, within my corporate network I can't run my node.

I also have a hard problem understanding how to use ZeroMe from different devices... I use the same masterseed (maintaining my ID) but my ZeroMe profile does not seem to move between my devices. I find the hub concept difficult to understand...

</comment><comment><USER9> Wait a second-- ZeroNet was written in Python and hasn't iterated to a lower level, popular systems programming language yet? Hold the presses! Before I get too excited, though-- would someone involved with the project share what's the reason?

</comment><comment><USER10> The trouble with every decentralised anything I've seen is that the on- boarding is so.damn.complicated. Peer to peer doesn't work if there are no peers.

You can almost tell that a service is going to fail to adopt any sort of critical mass by the size of your scrollbar in articles about them.

Additional:

> Uncensored

> Sites are served by visitors

Technically, decent idea. Realistically, you're hosting the stuff people don't want to pay to host.

<comment><USER11> Speaking of onboading -- why doesn't someone build "Just like Twitter minus everything everyone dislikes about Twitter"?

Is it due to the challenge of building critical mass?

<comment><USER12> Does Mastodon ([https://joinmastodon.org](https://joinmastodon.org)) fit what you just described?

<comment><USER11> I suppose my question is illformed. And perhaps it's not possible to make my question properly-formed.

I mean very similar to Twitter, in that it's a centralized service.

But, they'd do a better job of protecting users when threads go hostile. Perhaps I'm too focused on today's boycott.

<comment><USER13> Right away, i will state that i am biased in favor of decentralized/distributed/federated styles of platforms, such as mastodon gnu social, etc. Having said that, i still think your needs might be best met by one or some of these non-centralized platforms (and not twitter)...Here's one way you can test this quite easily and painlessly (using mastodon as an easy- to-onboard example):

1\. Visit [https://instances.social](https://instances.social) and walk through the choices. This will help you choose a mastodon "instance" which would be most relevant to you.

2\. Then join and use/play around with that recommended mastodon server.

The beauty of mastodon - and other similar platforms - is that you are not stuck to that server only. Mastodon does not have a single, central server like twitter; each of its numerous servers can however connect with each other. (Apologies, i don't know your level of tech literacy, so am purposefully keeping this high-level for ease of explanation.) You can join any peer server/instance and still connect with friends/acquaintances from other mastodon servers. Some of these other mastodon servers focus around a specific community, some do not. You could join one of these servers - <USER2> the one that helps protect its users to be yes open in their opinion but shielded from hostiles, trolls, a$$holes, etc. I can't say for sure because i don't know, but there certainly could be such a mastodon server out there. (We must remember that there often are people thinking and feeling the same as us at times.) Think of it like email: anyone can send a message to anyone else (provided they know their recipient's address) but each person can have an email address from different domains! Alice's address might be firstname.lastname@example.com, and she can can send a message to firstname.lastname@example.com...and neither of them "reside" on the same email server...And email - as far as delivery is concerned - has worked pretty ok for several decades. This tech philosophy can work for social networks as well.

I may be missing the mark on what you really want, since i'm only going off of minimal notes...but i really believe in non-centralized platforms. I myself am a fan of Gnu Social, but Mastodon is simply such a powerful platform because the on-boarding is so very simple. (And, by the way mastodon servers CAN connect with Gnu Social servers, so good benefits all around!) There's a reason that mastodon is so extremely popular. Even if you don't believe in or agree with what I (or others) have stated about non-central platforms, I encourage you to try it out and see for yourself, if it meets your needs. Good luck!!!

</comment></comment></comment></comment></comment><comment><USER14> How exactly did they solve cross-site scripting? It looks like all pages run under same hostname:port pair.

</comment><comment><USER15> Is ZeroNet built on ipfs or a standalone implementation?

<comment><AUTHOR> It is not built on ipfs. It uses the bittorrent DHT to associate site addresses with IP addresses (or tor onion addresses if configured to use tor). Actual transfer of data is done via a custom p2p service implemented within ZeroNet.

</comment></comment><comment><USER16> Didnt Opera do something like this years ago? Opera Unite

</comment><comment><USER17> > Peer to peer doesn't work if there are no peers.

Thankfully there's thousands of peers, and quite a few of those are people escaping the GFW of mainland China.

<comment><USER18> How does peer-to-peer get pass the firewall ? They can host stuff anonymously inside the country though.</comment></comment>


My coworkers made me use Mac OS 9 - <AUTHOR> http://arstechnica.com/apple/2015/11/my-coworkers-made-me-use-mac-os-9-for-their-and-your-amusement-2/ <comment><USER2> _We live in an era of constant updates, where your browser changes every six weeks, and your operating system changes every 12 months. […] Sometimes you just want everything to stand still for, like, a second._

Amen. I for one wish there was a way to hop off the CADT [1] roller coaster and stick with an OS stack that would just sit still and focus on _fixing all its damn bugs_ for once.

X.org/GNU/Linux was finally in bugfix mode for a few years in the mid/late 2000s, and it was a stable place to live for the somewhat-technically-minded. Then the cloud, smart phones, and the HTML5 "living standard" all took off, and you're forced to ride that spastic technological train if you want to keep up with anyone.

[1] [https://www.jwz.org/doc/cadt.html](https://www.jwz.org/doc/cadt.html)

<comment><USER3> I have done this.

In early 2009 I bought an octo mac pro with Snow Leopard and 6 GB of RAM.

Although I have reloaded Snow Leopard thrice, it remains the exact same configuration: same mac pro, same 8 GB RAM, same Snow Leopard.

I have not run into any problems whatsoever. I run a perfectly modern browser with 30+ tabs open, I run multiple guests in VMWare Fusion and I don't miss having the app store at all.

In a few months, this will be seven years of platform stability. I have enjoyed it immensely.

Further, provided nothing too sticky comes up with continuing to run Snow Leopard, I think I can add one of those bootable PCIe SSDs and max out my ram and run this to the 10 year mark.

<comment><USER4> Snow Leopard was pretty much the peak of the OSX's, IMHO. If for no other reason that they hadn't yet broken Expose/Spaces and called it "Mission Control."

<comment><USER5> And it was before they killed Front Row to force you to buy a separate box to do home theater duty. And before they broke full-screen apps. 10.7 kicked off a round of experimentation that really should have been optional to the end user, as most of that stuff has only recently started to settle down into something usable.

</comment></comment></comment></comment><comment><USER6> I still use OS 9 almost every week on a Powermac 1999 . The reason is that my drum scanner requires a card/driver/app that wasn't ported to OSX and won't run under "Classic Mode". Everything works perfectly, including original keyboard and mouse!

[edit] Wrongly cited Rosetta, a PPC to x86 translator. "Classic" allowed OS9 apps to run on OSX.

<comment><USER7> It's no wonder it still works... those Powermacs were built like tanks. In high school my physics teacher accidentally smacked one with a baseball bat and it fell down off a counter, but after we picked it up it worked fine, with little more than a scuff on the side.

<comment><USER6> They are tough, largely overbuilt systems that seems indestructible. I have a few old systems in a closet (SGI, DEC, SUN, NEXT) and always wondered why they'd build computers like that, I mean, they weren't made to last for more than a few years. And they sound like... private jets!

</comment></comment></comment><comment><USER8> Old OSes are perfectly usable on their own, the problem is always that they can't interoperate with the newer outside world very well.

Sit someone down with a Windows 95 machine and they could happily play games, write and print documents, and so on, but they might not have much luck receiving or sending them, and sorry about browsing the web.

<comment><USER9> Those old OSes also had severe reliability and usability issues. They did not have memory protection, so a web browser crash can take out your word processor and everything else. Each of them had a key combination you had to be familiar with to reboot the machine.

MacOS 9 also didn't have preemptive multitasking, so encoding a movie means you don't get to read your email. Some people used MacOS 9 as a web server, and discovered that if something fell on the mouse then the server was offline until the mouse finished selecting something.

So, stick to the stable software, and don't make your document too big, and you should be fine.

<comment><USER10> I find the notorious win9x stability issues were to a large extent because they seemed particularly sensitive to bad hardware - run win98 se on solid, good quality hardware and it was actually quite stable.

As long as you didn't try multitasking too much at least...

<comment><USER11> Bad drivers in particular would cause a bunch of bluescreens.

</comment></comment></comment></comment><comment><USER8> Title should probably be be "My coworkers made me use Mac OS 9 (2014)", since it's an article from last year, but republished for Thanksgiving.

</comment><comment><USER12> I grew up on Macs from the System 7 to Mac OS 9 era, so this was a bit of nostalgia for me. I do think the OS was outdated even for its time. Memory protection could be found in Windows NT, OS/2 and every Unix-like OS to my knowledge. Meanwhile, Mac OS 9 could be segfaulted by a single failure to free memory in a third-party application. Nostalgia is not enough to make you look back on that fondly.

As an aside, those grey rectangles may be ugly to some but at least you had themes [1]. 15 years later, people went crazy at the addition of "Dark Mode" in OS X Yosemite.

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

<comment><USER13> It may not be much, but I have been themeing OS X for a years now with themepark/(s)artfiletool/themeengine. It may not be as easy as it was on OS9, but I've made some pretty cool stuff. I do agree that it's ridiculous that people are going crazy for just a tiny bit of customization that third parties (cough max rudberg) have been doing for years.

</comment></comment><comment><USER14> Its kind of depressing to read this working on current projects knowing they will be meaningless in 15 years. So much for my life's work!

<comment><USER15> Unless your software happens to be fondly remembered in an article (or 3d hypercybervis, or whatever we have then).

</comment></comment><comment><USER16> That 2002 PowerBook G4 has a thinner bezel than my 2015 Macbook Air and the iPad...

<comment><USER17> The Titanium G4 was a really aggressive design, and for the most part they pulled it off. There are a few pieces that don't hold up to rough daily use (the hinges).

The contemporary iBooks had much thicker bezels and were built much more durably, for a target market that probably included education.

Loved the ircle screenshot.

<comment><USER18> Are thicker bezels associated with durability?

<comment><USER17> Not necessarily, but the PowerBook was built out of a titanium alloy and the iBook some kind of polycarbonate.

I'm no materials engineer but I can see an argument for the iBook needing to be thicker to support the same design loads.

(I'm sure it was just a side benefit that it let them save a few bucks on display size, without having to also shrink the keyboard to an unusable size.)

<comment><USER14> It's because they need the wider bezel in order to make the dramatic space savings on thickness that people appreciate more.

</comment></comment></comment></comment></comment><comment><USER19> "when the system is working smoothly things open and close pretty much instantaneously. That is, unless you get a pop-up message that momentarily freezes the OS"

The OS isn't frozen. OS 9 just didn't have preemptive multi-tasking. If the code for that dialogue box wasn't specifically written to hand control back to the OS, it wouldn't do so until you click it away. Yes, this was the state of Mac OS a full five years after Windows 95 came out. There's a reason why Apple nearly died in the late nineties.

</comment><comment><USER20> Heh, I was playing with OS 8.x recently on the Raspberry Pi, and it made me somewhat more productive. I can't believe that I could have a fully functional computer for just $5.

Here is what it looks like. [https://goo.gl/photos/jPzant4sB71tnU149](https://goo.gl/photos/jPzant4sB71tnU149)

</comment><comment><USER21> This is what you gotta give to MS. You can still install AoE2 on Windows 10 no problem (right?), but trying to get it to work on a Mac requires custom third party wrappers. (I also didn't even know/forgot AoE was released for the Mac)

<comment><USER8> I wish that Apple had MS's backwards-compatibility on iOS. Poor BC combined with a walled garden means old games and apps simply disappear out of existence when the developer cannot afford to support them any more.

<comment><USER22> iOS usually runs apps from previous iOS versions. I'm not sure about exact level of backward support. But usually apps disappear because their developers decide that they don't want to pay $100/year anymore.

<comment><USER8> > iOS usually runs apps from previous iOS versions.

iOS routinely breaks many apps with each upgrade.

> But usually apps disappear because their developers decide that they don't > want to pay $100/year anymore.

Maybe small apps. Most big apps that disappear do so because their developers cannot justify porting them. This is true for almost all the games that existed on early iOS by major publishers.

</comment></comment></comment></comment><comment><USER23> > Browsers of the day (Internet Explorer 5, Netscape) stopped being able to > render pages properly a very long time ago

No, not really. Those browsers still render pages just as properly as they ever did.</comment>


Murdering the Mayor of Paradise - <AUTHOR> https://knpr.org/desert-companion/2018-11/murdering-mayor-paradise <comment><USER2> "Although Goldwater liked to believe his associations with Greenbaum and Bioff wouldn't have an impact on his presidential dreams, he was wrong. The connection would dog Goldwater to his obituary in 1998."

Goldwater lost in a landslide in 1964, mostly because he was running against the heir to a very popular president and because the old New Deal coalition was not dead, partly because the media depicted him as dangerous. I doubt he lost any votes at all over ties to mobsters.</comment>


Samsung 6G white paper [pdf] - <AUTHOR> https://cdn.codeground.org/nsr/downloads/researchareas/6G%20Vision.pdf <comment><USER2> So out of touch.

Maybe it is different in Korea, but in the U.S. the real problem with wireless networks is coverage. Upstate New York alone has cell phone dead spots bigger than some European countries.

On a rather busy road I witnessed a motorcycle accident: many people were trying to call 911 and could not get through

[https://www.youtube.com/watch?v=tsHcLIxg8KA](https://www.youtube.com/watch?v=tsHcLIxg8KA)

somebody drove the 4 miles to the volunteer fire department to get help.

If 6G lets you sit in (only) Washington Square Park and watch a hologram or fill up an 18 TB external hard drive it is only going to have limited impact.

The backstory of the backlash against 5G is that the only story less plausible than "5G causes COVID-19" is that "5G has benefits for consumers."</comment>


Vanity barcodes - <AUTHOR> http://www.vanitybarcodes.com/

<comment><USER2> Smart idea, hope it works out for them :)</comment>


Ask HN: How to Learn a Musical Instrument Like a Hacker? (specifically piano) - <AUTHOR> I want to learn to play the piano, as I currently have no artistic form of self-expression. However, I feel like learning so many computer-related skills has changed the way I learn (for the better, I think). So, to all you of that have also spent enough time persistently working at code that you are a relentless skill-learners, what's the best way to learn an instrument in a thorough, engaging, and efficient manner? I'm planning on learning the piano, but any general advice would be useful, and would help more people. <comment><USER2> Personally I'd split practice into 3 phases:

1\. Hanon's Finger Exercises, mistakes are unacceptable during practice, 'specially while doing these. Use a metronome and master each exercise. Start slow and work your way up.

2\. Learn music theory, I'd burn through Mark Levine's 'The Jazz Piano' book, don't skip anything in that book including the little excerpts of songs.

3\. Learn your favourite songs by ear (after you learn your favourites be diverse and learn other genres by ear), and pick one great musician you like to study to death. Learn all their songs by ear, every single note in every single solo etc.

If you want to learn piano quickly then make sure you practice everyday for a long time deliberately. If you want to learn piano extremely quickly then find a really good teacher and take lessons, often teachers are invaluable until you get to the point where you can give good self feedback.

</comment><comment><USER3> After learning several instruments, I am using this approach to learn piano:

-play 10+ minutes daily

-work through a book that interests me (boogie woogie)

-get the fingering right early - there are numbers in the book, hard to unlearn mistakes.

-use a metronome to find the weak areas and work until they are strong/fast/easy

-intentionally build muscle memory for arm/shoulder

-use uneven timing of notes to strengthen the weak spots

-play 30-40% by ear (ex: pandora, play along to each song.)

-occasionally play with a teacher to correct mistakes.

</comment><comment><USER4> Search Amazon for books on the subject. Read the reviews. Buy the one that excites you the most.

I did that for guitar after fumbling with it for ~5 years. Within days of beginning "Fretboard Theory" I had the entire fretboard mapped and the foundations I needed for improvising engrained in my memory.

I'd imagine the Piano would be easier to start with too, since it's easier to thump keys than to produce any clean sounds on a guitar.

</comment><comment><USER5> I begged my parents to buy me a piano when I was a child, there was something amazing about being able to produce sound that would have an impact on people.

Find the music you love, and learn how to play that... it mightn't be efficient or thorough, but man it'll be engaging.. which is what I believe counts.

</comment><comment><USER6> Tinker with the way you interact with the instrument and interface. I don't know what this means for a piano, but I tune my guitar to EADGCF (reasoning is an exercise left to the reader), and I used to tune to DG#DG#DG#

</comment><comment><USER7> Learn to read music. Use Hanon's Finger Exercises for practice.

</comment><comment><USER5> Also <http://www.chromeweblab.com/> :)

</comment><comment><USER8> learn it the hard way</comment>


AI in the Time of Coronavirus - <AUTHOR> https://towardsdatascience.com/ai-in-the-time-of-coronavirus-diagnosis-analytics-and-prediction-ad8b91a2f191 <comment><USER2> AI is quite useful in Coronavirus times, for instance, writers can use online AI tools to get most out of them during the time of pandemic such as: [https://paraphrasetoolonline.com/paraphrasing- tool/](https://paraphrasetoolonline.com/paraphrasing-tool/) and similarly admin people can create free online invoices using the tool [http://invoicegenerator-template.com/](http://invoicegenerator-template.com/)</comment>


Mob Software (Richard P. Gabriel & Ron Goldman) - <AUTHOR> http://www.dreamsongs.org/MobSoftware.html

<comment><AUTHOR> This was submitted 11 months ago but it only got 1 vote, which to me means that the voting completely failed 11 months ago because this should be highly rated.</comment>


Smarter bikes: The Vanhawks (YC W15) Valour leads the way and watches your back - <AUTHOR> http://www.bikerumor.com/2016/01/04/smarter-bikes-everyday-vanhawks-valour-leads-the-way-watches-your-back/ <comment><USER2> Considering how that bike is spec'ed I have to say that is a pretty good price point. Carbon, Avid BB5s and good stock tires of an appropriate city width... Not sure if I'm seeing an integrate lamp on the handlebars or not, but if it is I'd assume it's dynamo powered like the other components so that could be pretty nice and bright.

I'm skeptical about the usefulness of the electronics mainly because turn-by- turn GPS directions on bikes from Google Maps at the least are neither the safest nor fastest at the moment, though they really get better all the time.

</comment><comment><USER3> I saw this company advertising job openings a few months ago: ~C$50k/year (plus equity) in Toronto. Does anyone know why the salary offering would be so low (maybe there is lots of equity though)? I know salaries are generally a bit lower in Canada, but _that_ low?

<comment><USER4> Could be the bike industry. Niche market bikes are actually a pretty crowded field.</comment></comment>


Why we have not succeeded in disrupting tech recruitment - <AUTHOR> https://blog.cocoonapp.co/cocoon-is-shutting-down-85445d59ff29 <comment><USER2> This is an unusually good article of the "X is shutting down" variety. Sad!</comment>


FoundersBelt - Curated resources for every stage of startups - <AUTHOR> https://foundersbelt.com/ <comment><USER2> Or: "Here's a list of all our referral links"

<comment><USER3> That may be true, but it doesn't prevent it from also being a useful resource

<comment><USER4> It does, however, make me question how much bias came into the selection of which resources to list.</comment></comment></comment>


Building a Hexagonal Grid in CSS - <AUTHOR> https://ninjarockstar.dev/css-hex-grids/ <comment><USER2> This is a must read if you're working with hex grids: [https://www.redblobgames.com/grids/hexagons/](https://www.redblobgames.com/grids/hexagons/)

<comment><USER3> Thanks for posting this, it was fascinating! I had to implement a hex grid recently, so when I started reading through this page and seeing some of the same things I had thought about, I thought I wouldn't find much that was new. I couldn't have been more wrong!

</comment></comment><comment><USER4> I see a lot of convoluted CSS things like this. Is there not much awareness of SVG in the webdev community, or is there some other reason people don't want to use it?

<comment><USER5> If you wanted arbitrary HTML content in the hexagons, would you be able to use SVG? I know you could hack together similar output since SVG supports images, links, text formatting, etc., but I can see people liking the idea of the hexagonal containers being plain divs that you can put whatever content you want into.

<comment><USER6> You can put arbitrary HTML elements inside an SVG element embedded in an HTML page:

[https://developer.mozilla.org/en- US/docs/Web/SVG/Element/for...](https://developer.mozilla.org/en- US/docs/Web/SVG/Element/foreignObject)

<comment><USER7> I wonder what the accessibility for html in svg is like. But really, isn't this just an iframe with a different name?

<comment><USER8> No. An iframe is a separate browsing context which as a developer you can't interact with perfectly, and is segregated from the rest as a user, which has implications on keyboard interactivity especially. Essentially, <iframe> is an accessibility headache. <foreignObject> is just the opposite of <svg>, so it's no trouble at all.

</comment></comment></comment></comment></comment><comment><USER9> Oooh, nice.

I have worked with hexes in little side project games, it was a difficult process and I went through a phase of trying to home-roll canvas drawing of hexes (and making some interesting looking bugs). I ended up using a js library (Konva / [https://konvajs.org/](https://konvajs.org/)) which was pretty easy to implement.

One completed (albeit ugly) project was an implementation of a minigame I played in Magnum Opus:

[https://game.manfrincdn.com/#/](https://game.manfrincdn.com/#/)

It's been a little project kicking around that I want to make a hex game engine of sorts in Vue. The difficult part I keep running in to is connecting the state of the engine (in vue) with the state of the canvas (outside). I've ended up often hitting lower level APIs to watch/update/rerender parts, but at that point I feel like I end up reimplementing parts of vue within itself, and that nagging 'you are missing an obvious solution' worm starts up.

A pure CSS approach would make this a lot simpler, because there'd be no need to do any manual wiring up of state to canvas state, you'd just let vue handle that cycle because that's its core competency.

<comment><USER10> Vue is pretty good at generating SVG (I use Vue+SVG on [https://www.redblobgames.com/grids/hexagons/](https://www.redblobgames.com/grids/hexagons/)) but there's a trick for making it work with Canvas too. [https://simblob.blogspot.com/2018/03/using-vue-with- canvas.h...](https://simblob.blogspot.com/2018/03/using-vue-with-canvas.html) — it will make the canvas drawing function depend on the right data in Vue, so that if any of that data changes, it re-draws the canvas automatically.

<comment><USER9> Oh excellent, thank you, I didn't know you had written about hexes + vue -- your site has been absolutely invaluable to me and is one of the primest examples of visualization done well.

One problem I remember running in to (drawing hexes) is that the redraw of one hex overwrote what had been drawn in another, causing corners of the bounding box of a hex to clear its neighbors. Did you run in to any issues like that, or was that likely just a quirk of how I coded it (I am amateur with canvas, so it's a likely cause).

<comment><USER10> There are some gotchas when using sprites/images for hexagons. 1. The bounding boxes overlap, so you'll want to make sure that the sprites have transparent corners so that they don't overwrite what's in the next hexagon. 2. The images won't be exactly regular (equal sided) hexagons because regular hexagons have an irrational side width or height. The image size will be rounded off to the nearest pixel. You'll need to adjust for this in your hexagon calculations, either shrinking or expanding one of the axes a tiny bit so that both axes are integer sized. For example if your hexagon spacing is 173.20508 x 150 then you'll change your spacing to be 173 x 150, or whatever matches your image size.

</comment></comment></comment></comment><comment><USER11> Impressive! It's interesting for me if such grade CSS developers get same compensation as their JavaScript counterparts.

<comment><USER12> I think not, because despite the high quality of the pure CSS result, there's probably a js lib out there that will get the same result for a few hundred extra kilobytes in the bundle. But knowing CSS is still very useful as a skill, it's usually your "moat" that makes it hard for backend devs to do your work while you're on vacation.

<comment><USER13> They shouldn't be doing frontend work. I'd argue frontend tooling and paradigms are more complicated than backend now.

</comment></comment></comment><comment><USER14> Kind of a nostalgia thing to see this, as one of my earliest answers on gamedev stack was about creating a hex map (See [https://gamedev.stackexchange.com/questions/6382/how-to- crea...](https://gamedev.stackexchange.com/questions/6382/how-to-create-a- hexagon-world-map-in-php-from-a-database-for-a-browser-based-str))

I cheated and used hex-shaped png files but looking back using CSS to just auto-shape the PNG would be good.

That said, if you ARE using textures in the hexes and you'd like to actually tile them, you'll have to explicitly design an image that will tile. So you might as well just create hex shaped images like this and forget getting too fancy.

<comment><USER14> So there's one trick that's kind of cool using PNG images (with transparency) for your tiles. You can have parts of the image that actually extend out of the tile. So a tree can extend off the top of the tile in a pseudo-isometric style. Or a castle, or a mountain, or anything.

</comment></comment><comment><USER15> PSA: don't open this on Safari on a Mac book Pro, it'll either take a while to load or it'll freeze your computer if you have other heavy processes running. Chrome works fine.

</comment><comment><USER16> I would like to see this where each edge is also uniquely addressable.

</comment><comment><USER17> This totally reminded me of Tantek's site [http://tantek.com/map.html](http://tantek.com/map.html)

Wayback: [http://web.archive.org/web/20020321021851/http://tantek.com/...](http://web.archive.org/web/20020321021851/http://tantek.com/map.html)

</comment><comment><USER18> Why would you make this responsive? It doesn't make sense for any games to have the map/board be different based on window-size.

</comment><comment><USER19> I ran into the problem too that CSS-counters are strings and not integers. Can anyone explain the reasoning? It's understandable that the displayed value is a string but the (sub)counters themselves could as well been done as integers imo.

</comment><comment><USER20> Can anybody explain to me why I would use the CSS grid to accomplish this and not negative margins on inline divs? The latter is how I immediately guessed that this would be implemented. What would be the advantages of the grid method?

<comment><USER21> Maybe the responsiveness? In a real use case I think you'd want to have a set grid size so responsiveness seems like an odd goal.

</comment></comment><comment><USER22> Sry noob here, but are there any spaces you have to use this hexagonal grid to solve things?

<comment><USER23> Accessibility for people with hexagonal monitors.

</comment></comment><comment><USER24> I'm a bystander that ploughed through quite a lot of text regarding one case.

How do you do ngon grids in CSS?

<comment><USER25> I'm not sure if you are joking, but the answer is: you don't :-)

N-gon grids don't make sense for N other than 3, 4, and 6 [1]. N=4 is easy, N=6 is in the OP. I suspect one could find a similar "css trick" for N=3.

1: [https://en.wikipedia.org/wiki/List_of_regular_polytopes_and_...](https://en.wikipedia.org/wiki/List_of_regular_polytopes_and_compounds#Euclidean_tilings)

<comment><USER26> Don't forget about the 15 pentagonal tilings! [https://en.wikipedia.org/wiki/Pentagonal_tiling](https://en.wikipedia.org/wiki/Pentagonal_tiling)

<comment><USER10> Also cool: the last one wasn't discovered until 2015.</comment></comment></comment></comment>


Ask HN: Does Example.co vs. ExampleApp.com make a difference? - <AUTHOR>

I have picked up a few domain names for my new startup. While the name I truly wanted was taken, I was able to get Example.co along with ExampleApp.com/.net/.org (Of course, Example is not the name of the startup).<p>The startup will be a mobile app with a web-based management interface. Is it better to use Example.co, or stick with the more clunky ExampleApp.com? I've looked around, but I can't find much research on the subject. What would you advise? <comment><USER2> Largely, no. Chances are you're better off spending your time improving the product than worrying about the domain. Let's pretend that it is a productive use of your time though:

It depends. Is it an app? Will the word "app" in your URL help your SEO? Do you need to differentiate from some brand already known as Example, by making it clear that you're "Example the app", not "Example the [other thing]"?

</comment><comment><USER3> I'm going to say it doesn't really matter, people are just going to search for it and possibly bookmark it rather than actually type it into their browser. Worst case they're going to go to Example.com, realize it's not what they're looking for, and then search for it. Your challenge is really going to be getting to the top of SERP.

</comment><comment><USER4> It does not matter.</comment>


Cassini, Rømer, and the velocity of light (2008) - <AUTHOR> http://fermatslibrary.com/s/cassini-romer-and-the-velocity-of-light <comment><USER2> I so rarely get to learn new words that I've never once encountered before, but this piece had one. "Prostapheresis"

Apparently it's an archaic trigonometric method for approximate multiplication and division.

<comment><USER3> [https://en.m.wikipedia.org/wiki/Prosthaphaeresis](https://en.m.wikipedia.org/wiki/Prosthaphaeresis)

<comment><USER4> As a mathematician who is still in the learning phase and intuition is lacking, thank you. This method is ingenius and makes the invention of logarithms make even more sense consequentally. HN rocks :-)

</comment></comment></comment><comment><USER5> This is an interesting article about later additions to the quest to measure light's speed: [https://www.physicsforums.com/insights/speed-light- galilean-...](https://www.physicsforums.com/insights/speed-light-galilean- relativity)

</comment><comment><USER6> History of radio astronomy. It can't get much better than that.</comment>


Compare JS MVC frameworks implementing the same site: TodoMVC - <AUTHOR> http://addyosmani.github.com/todomvc/

<comment><USER2> While I appreciate the need to compare MVC JavaScript libraries -- lots of folks are looking for a shortcut for evaluating codebases -- I also worry that using a relatively shallow comparison of a "trivial" example app isn't the best way to make choices.

To that extent, I have to apologize for publishing the original Todo example app ;)

While TodoMVC is a fine resource, I think it's still important to look at what the different libraries and frameworks choose to do _differently_ ... and most importantly, what sort of real apps have been built with each.

<comment><USER3> (tl;dr I created TodoMVC and agree with many of the points @jashkenas makes above)

Whilst at present TodoMVC provides a simplified baseline for comparing JavaScript MV* frameworks, we feel that this at least gives developers an opportunity to narrow down the list of them they wish to explore further. No one should be using TodoMVC as the be all and end all of which framework they use as there's significantly more to it than that. That would be a little silly :)

With respect to the comment lower down in the page regarding the nitty gritty not being covered (auth, validation, routing etc.), it's a valid point and we currently have plans for tackling this in version 1.1 of the project. Initially Backbone.js, Spine.js, Ember and CanJS will have complete end-to-end examples offered but we hope to expand upon this as we work our way through releases.

At the end of the day, our goal is to make it as easy as possible to find the framework (or frameworks) that best fit your needs and hopefully give you some incentive to investigate one or two in more depth before making your decision on what to use.

</comment></comment><comment><USER4> I'm genuinely sick of seeing todo apps being implemented, and in this case, compared, in various languages. It's simply not a complex enough app (ie: no authentication/login system) and serves only to give the highest level of an overview about a framework.

Actually getting down into the nitty gritty side of things (which includes everything from authentication, validation, and templating, to routing, persistence (both sql and no-sql), and XHR/we sockets) is crucial, in my eyes, for us to really see how a system can grow from an intro-to-framework-X into the next-big-thing.

Obviously, there's a requirement to actually _learn_ the language/framework that you end up choosing, and therefore there's no real benefit to having a copy/paste sample app that includes the kitchen sink, but _damn_ , I'm sick of recreating the wheel.

</comment><comment><USER5> This is great. I've been considering moving to a client side MVC as opposed to relying on GAE. I started messing around with Backbone.js and I really like it. What are the downsides of client side MVC as opposed to server? Is it easy to bog down the client with the extra processing?

<comment><USER6> _Is it easy to bog down the client with the extra processing?_

Sure, if you're not careful; but that's the case w/any language or layer of an application stack. I'd consider becoming familiar w/JavaScript a greater concern though. Learn to avoid JavaScript's foot guns, and use tools like Speed Tracer to help profile your JavaScript.

If it matters, my time tracking and invoicing product uses heavy client side processing, to the point where some of its reports never touch the server. We're seeing response times in the low ten's of milliseconds when relying on JS-only generated reports.

<comment><USER5> Makes sense, there's no one answer to my question, because there are so many variables involved. So, it will take trying them out and of course it will depend on my needs. It may even make sense to do server side on some parts of the site and client side on others. I like the idea of being less constrained to my backend technology, which is what attracts me to JS MVC. I also like how concise Backbone.js is, it doesn't seem to try to do too much.

</comment></comment></comment><comment><USER7> This is a fantastic idea. I love the breadth of frameworks covered. Are you having to solicit developers to create their own example? Nicely done.

</comment><comment><USER8> Slightly related, I'm looking for a MVC Node.js framework, that is, one that runs on the server. Does anyobody know one?

Edit: Just got this one from another post on the front-page <https://github.com/mde/geddy>.

<comment><USER9> Express is pretty great, very bare-bones though.

</comment></comment><comment><USER10> Why limit it to Javascript? This would be a fantastic way to learn any framework or language.

<comment><USER11> Leaving the browser makes the "problem to be solved" into something so unspecified the comparisons would stop having value..

<comment><USER10> A todo list encompasses many basic entry points a piece of software must accommodate:

1) interface 2) database 3) adding/removing from said store 4) sorting 5) class structures ...

I could go on. Essentially, the best way into any language is to know how something is _supposed_ to work and compare it to how it appears to be working, making those more difficult leaps by actually practicing.

</comment></comment></comment><comment><USER12> Love this idea! I need to get more familiar with a lot of these frameworks

</comment><comment><USER13> todomvc is a good way to make people aware of the different frameworks and gives a quick guideline to their "style". If anyone is doing anything more complex then they should be spending the time on each framework's page to evaluate which one has the features they need and if the framework's own documentation and website hasn't got documentation that you need then you probably shouldn't be using it anyway.

</comment><comment><USER14> I like this idea. One request: I wish there were more convenient links to unminified source for each of the examples.</comment>


R 3.3.2 is released - <AUTHOR> https://www.r-statistics.com/2016/11/r-3-3-2-is-released/ <comment><USER2> So happy R is chugging along.

</comment><comment><USER3> For the lazy:

NEW FEATURES

        extSoftVersion() now reports the version (if any) of the readline library in use.
        The version of LAPACK included in the sources has been updated to 3.6.1, a bug-fix release including a speedup for the non-symmetric case of eigen().
        Use options(deparse.max.lines=) to limit the number of lines recorded in .Traceback and other deparsing activities.
        format(<AsIs>) looks more regular, also for non-character atomic matrices.
        abbreviate() gains an option named = TRUE.
        The online documentation for package methods is extensively rewritten. The goals are to simplify documentation for basic use, to note old features not recommended and to correct out-of-date information.
        Calls to setMethod() no longer print a message when creating a generic function in those cases where that is natural: S3 generics and primitives.

INSTALLATION and INCLUDED SOFTWARE

        Versions of the readline library >= 6.3 had been changed so that terminal window resizes were not signalled to readline: code has been added using a explicit signal handler to work around that (when R is compiled against readline >= 6.3). (PR#16604)
        configure works better with Oracle Developer Studio 12.5.

UTILITIES

        R CMD check reports more dubious flags in files 'src/Makevars[.in]', including -w and -g.
        R CMD check has been set up to filter important warnings from recent versions of gfortran with -Wall -pedantic: this now reports non-portable GNU extensions such as out-of-order declarations.
        R CMD config works better with paths containing spaces, even those of home directories (as reported by Ken Beath).

DEPRECATED AND DEFUNCT

        Use of the C/C++ macro NO_C_HEADERS is deprecated (no C headers are included by R headers from C++ as from R 3.3.0, so it should no longer be needed).

BUG FIXES

        The check for non-portable flags in R CMD check could be stymied by 'src/Makevars' files which contained targets.
        (Windows only) When using certain desktop themes in Windows 7 or higher, Alt-Tab could cause Rterm to stop accepting input. (PR#14406; patch submitted by Jan Gleixner.)
        pretty(d, ..) behaves better for date-time d (PR#16923).
        When an S4 class name matches multiple classes in the S4 cache, perform a dynamic search in order to obey namespace imports. This should eliminate annoying messages about multiple hits in the class cache. Also, pass along the package from the ClassExtends object when looking up superclasses in the cache.
        sample(NA_real_) now works.
        Packages using non-ASCII encodings in their code did not install data properly on systems using different encodings.
        merge(df1, df2) now also works for data frames with column names "na.last", "decreasing", or "method". (PR#17119)
        contour() caused a segfault if the labels argument had length zero. (Reported by Bill Dunlap.)
        unique(warnings()) works more correctly, thanks to a new duplicated.warnings() method.
        findInterval(x, vec = numeric(), all.inside = TRUE) now returns 0s as documented. (Reported by Bill Dunlap.)
        (Windows only) R CMD SHLIB failed when a symbol in the resulting library had the same name as a keyword in the '.def' file. (PR#17130)
        pmax() and pmin() now work with (more ?) classed objects, such as "Matrix" from the Matrix package, as documented for a long time.
        axis(side, x = D) and hence Axis() and plot() now work correctly for "Date" and time objects D, even when "time goes backward", e.g., with decreasing xlim. (Reported by William May.)
        str(I(matrix(..))) now looks as always intended.
        plot.ts(), the plot() method for time series, now respects cex, lwd and lty. (Reported by Greg Werbin.)
        parallel::mccollect() now returns a named list (as documented) when called with wait = FALSE. (Reported by Michel Lang.)
        If a package added a class to a class union in another package, loading the first package gave erroneous warnings about "undefined subclass".
        c()'s argument use.names is documented now, as belonging to the (C internal) default method. In "parallel", argument recursive is also moved from the generic to the default method, such that the formal argument list of base generic c() is just (...).
        rbeta(4, NA) and similarly rgamma() and rnbinom() now return NaN's with a warning, as other r<dist>(), and as documented. (PR#17155)
        Using options(checkPackageLicense = TRUE) no longer requires acceptance of the licence for non-default standard packages such as compiler. (Reported by Mikko Korpela.)
        split(<very_long>, *) now works even when the split off parts are long. (PR#17139)
        min() and max() now also work correctly when the argument list starts with character(0). (PR#17160)
        Subsetting very large matrices (prod(dim(.)) >= 2^31) now works thanks to Michael Schubmehl's PR#17158.
        bartlett.test() used residual sums of squares instead of variances, when the argument was a list of lm objects. (Reported by Jens Ledet Jensen).
        plot(<lm>, which = *) now correctly labels the contour lines for the standardized residuals for which = 6. It also takes the correct p in case of singularities (also for which = 5). (PR#17161)
        xtabs(~ exclude) no longer fails from wrong scope, thanks to Suharto Anggono's PR#17147.
        Reference class calls to methods() did not re-analyse previously defined methods, meaning that calls to methods defined later would fail. (Reported by Charles Tilford).
        findInterval(x, vec, left.open = TRUE) misbehaved in some cases. (Reported by Dmitriy Chernykh.)</comment>