No double standards: supporting Google's push for WebM  - <AUTHOR> http://www.fsf.org/news/supporting-webm <comment><USER2> I was discussing this with some people yesterday. I find it incredibly frustrating that the Grubers of the world have spent months attacking Google for supporting the evil, closed Flash, but then manage to spin Google dropping a closed format in favor of an open one as evil and using it as a roundabout way of continuing to hate on Flash.

The fact of the matter is that Flash is an entrenched, defacto standard and isn't going away any time soon. HTML5 isn't anywhere close to completely replacing Flash even if it were to disappear in a puff of logic right this moment.

HTML5 <video> is in its infancy, and isn't being perpetuated by sheer momentum like Flash. Further, H.264 was a complete non-starter for Mozilla, and Firefox holds nearly 20% of the market. Using H.264 for HTML5 <video> would have _guaranteed_ market segmentation and hurt the chances of a truly open future.

This argument about dropping H.264 propagating Flash in the short term is just insanity to me. Flash is _already_ here for the short term. We need to focus on our _long-term_ options for moving to something more open, and the whining about this decision strikes me as totally myopic at best and blind fanboyism at worst.

<comment><USER3> _I was discussing this with some people yesterday. I find it incredibly frustrating that the Grubers of the world have spent months attacking Google for supporting the evil, closed Flash, but then manage to spin Google dropping a closed format in favor of an open one as evil and using it as a roundabout way of continuing to hate on Flash._

Your argument turns on Gruber hating Flash for being closed. He doesn't: He hates Flash because he thinks it's crap. Gruber is not an open source advocate. He has no objection to open standards, free software, or open source software, but they aren't his passion.

You're right that Flash is an entrenched, defacto standard. It is, however, _much_ less of one than it was three years ago, and that's pretty much entirely due to one factor: iOS doesn't support it. The HTML <video> element has traction entirely due to the fact that it's the only way to play video from a web page on an iOS device. You don't have a choice between <video> or Flash: It's <video> or nothing.

Chrome dropping H.264 support isn't going to push adoption of the <video> element, because Flash continues to be a perfectly valid alternative method of providing video to Chrome. If Chrome dropped H.264 _and_ Flash, that'd be a different story.

Gruber's position is entirely consistent: He supports moves that reduce the usage of Flash, and doesn't support ones that increase it. Google's choice to drop H.264 in Chrome will, in the short term at least, result in the latter. Acknowledging this fact is neither myopic nor fanboyism.

<comment><USER2> >You're right that Flash is an entrenched, defacto standard. It is, however, much less of one than it was three years ago, and that's pretty much entirely due to one factor: iOS doesn't support it. The HTML <video> element has traction entirely due to the fact that it's the only way to play video from a web page on an iOS device. You don't have a choice between <video> or Flash: It's <video> or nothing.

So is this debate about what's best for the future of open standards on the web, or is it about what's best for iOS?

>short term >myopic

S: (adj) short, shortsighted, unforesightful, myopic (lacking foresight or scope) "a short view of the problem"; "shortsighted policies"; "shortsighted critics derided the plan"; "myopic thinking"

<http://wordnetweb.princeton.edu/perl/webwn?s=myopic>

Sounds like exactly what I meant. It's focusing on short term consequences at the expense of long-term benefit.

As I said, dropping H.264 may result in the already entrenched Flash being used more in the near-term; in the long term it could help HTML5 <video> see better overall adoption.

<comment><USER4> > So is this debate about what's best for the future of open > standards on > the web, or is it about what's best for iOS?

Dropping support for h.264 means slower adoption of <video> How's that better for the open standards? The most infuriating part of this is, that FSF and Google are so busy with their own agenda, that they forget users.

<comment><USER2> >Dropping support for h.264 means slower adoption of <video> How's that better for the open standards?

20% of the browser market was _never_ going to adopt H.264. That's a fifth of the market cut out from using <video> entirely.

How in the world is that possibly good for web standards?

>The most infuriating part of this is, that FSF and Google are so busy with their own agenda, that they forget users.

That majority of the market has the entrenched Flash until HTML5 <video> gets sorted out as a standard everyone can use.

<comment><USER5> _20% of the browser market was never going to adopt H.264. That's a fifth of the market cut out from using <video> entirely._

20% and dropping... Should we also stop the <video> train in its tracks because IE6 does not support it?

<comment><USER6> Dropping?

<comment><USER5> All lists for browser share that I have seen show FF as having either plateaued or started to drop by small percentages. If you add mobile browsers into the mix then even the plateau becomes a small drop.

<comment><USER6> And you really think that going to continue once Firefox 4 and Firefox for Android are released? Firefox is going to be relevant for a long while, so comparing it to IE6 is pretty disingenuous.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> "free standards"

I'm glad somebody finally figured out how to accurately describe webm. All this hand-waving talk of 'openness' and 'open standards' was debate poison.

<comment><USER8> Except it's not "free" in the Free software sense. Google specifically addresses why they didn't use a GPL license but rather BSD. They want to promote WebM in proprietary, closed, products.

<http://www.webmproject.org/about/faq/> "One of the goals of having this code licensed as liberally as possible is to encourage adoption by as many users as possible. This includes both proprietary and free software. Using the GPL license would not be a good match for this goal."

The WebM issue is far from black and white. I still haven't figured out which side I agree with more. What I do know is that a lot of people are arguing tactics. This is a battle between corporations and everybody should be taking 100 steps back to try to figure out the strategies at work on both sides.

Edit: What I'm alluding to in my last point is a lot like Paul Graham's point in this essay from a while back: <http://www.paulgraham.com/submarine.html>

<comment><USER7> No, clearly it's not Free as in FSF, but 'free as in beer' is the only thing that separates it from H.264, it's definitely the most accurate description I've seen yet.

<comment><USER9> It's compliant with FSF's definition of free software (<http://www.gnu.org/philosophy/free-sw.html>) and Debian's guidelines (<http://www.debian.org/social_contract>).

Stallman himself agreed that it was a good thing for Xiph to relicense their libraries from the LGPL to a permissive free software license ([http://lists.xiph.org/pipermail/icecast- dev/2001-February/00...](http://lists.xiph.org/pipermail/icecast- dev/2001-February/000005.html)):

In response to the change of license, Richard Stallman of the Free Software Foundation says, "I agree. It is wise to make some of the Ogg Vorbis code available for use in proprietary software, so that commercial companies doing proprietary software will use it, and help Vorbis succeed in competition with other formats that would be restricted against our use."

<comment><USER7> Well, we're talking about two things, really- the webm reference implementation and the license under which the patents covering the spec are licensed. I guess the reference implementation is free as in freedom, and the spec is free as in beer to re-implement. This is why 'free standard' is such a pithy and accurate description.

</comment></comment></comment></comment></comment><comment><USER10> Or in summary: if you support a free Web, you support WebM and FSF's call for killing H.264. If you don't care, then H.264 seems just fine.

<comment><USER11> So, to watch a video using H.264, you use a patent encumbered codec, running on a patent encumbered CPU, accelerated by a patent encumbered GPU. The video came over patent encumbered network hardware, or from patent encumbered local storage, over patent encumbered interfaces and patent encumbered connectors.

If we switch to WebM, we have one less "patent encumbered" in there (maybe). I'm not impressed with the "free Web" argument.

</comment></comment><comment><USER12> The _content_ is all in h.264 because it works in 99.9999% of places. You can make _every_ browser support webM tomorrow and that still wouldn't be a compelling reason for publishers to add WebM in favour of the status quo.

The only thing that could achieve such a thing would be a device with iOS levels of popularity that a) doesn't support h.264 b) doesn't support Flash. Who is going to make such a device? A: Nobody, because it won't support any web video at all apart from maybe YouTube.

You can grouse about open principles all you want, but the big video producers don't care; they will not be a factor. Audience demand is the only thing that matters, and they won't demand WebM when h.264 is already working "fine".

<comment><USER13> Android if not today will be more popular device than iOS soon. I was thinking the combination of Android + Chrome would be enough to motivate publishers to encode using Webm?

<comment><USER14> I'm not yet aware of an Android device which supports WebM hardware decoding. Virtually all of them support H.264 hardware decoding.

This is not an iOS vs Android argument (though many have tried to make it so), all of the current devices chose H.264 as their primary codec because when they were being designed and developed that was the only logical choice.

</comment></comment></comment><comment><USER15> If Firefox wasn't supporting h.264, it was kind of pointless for Chrome to support it as well. As a developer, I have to have to resort to flash for h.264 anyways as Firefox has a much bigger market share than Chrome.

</comment><comment><USER11> H.264 is the standard for video compression. Period. It is what almost all professional hardware and software supports. It's how video is distributed on disc, via cable, via satellite, and via digital broadcast. It's what consumer hardware supports.

Someday it will be replaced, but it will take a technically better standard. WebM is not technically better. Take a time machine and send WebM back about 10 years, and it has a shot. Without a time machine, it is too late.

The problem Google and the FSF face is that very few _really_ care about having everything be free in the FSF's sense of free. Heck, even among Linux users, who you'd expect would be the most receptive of wanting everything to be free, very few run the truly free distributions, with no non-free modules or drivers. The vast majority are not even on Linux. They are on Windows and Mac, and so have no qualms about using non-free stuff.

To convince people they need to switch to something that is technically inferior, they need to be shown a problem that actually affects them. H.264 being subject to patent licensing in those countries that recognize software or codec patents is not a problem that can be shown to affect most web users or most web video producers, at least in a way they care about. The royalty free license for distributing free video on the web, and the high thresholds before license fees kick in for video producers, ensure that the vast majority of us never do anything that requires coughing up any money, and that takes the problem off most people's radar.

<comment><USER16> A huge part of the business and consumer world now takes benefit from fruits of free software movement. Your Android smartphone, your $49 Taiwanese wifi router, that Heroku service in the cloud you use - all of them would not exist as they are otherwise.

So like it or not, those freedom freaks are entitled to have a say to how things should work. They are too big part of an ecosystem to be ignored.

</comment></comment><comment><USER17> This article would be correct if Google dropped flash together with H.264. The practical result of playing H.264 to Chrome users via Flash instead of through a native open source implementation (Chromium) is surely a net negative for free standards supporters? After all it's "proprietary, nonstandard software."

<comment><USER18> I don't understand this position. Dropping H.264 is aligned with the FSF's goals, so of course they should support it.

To me, Google's move is an indication that Google will eventually drop and/or downgrade Flash support.

You encourage institutions to do the right thing by applauding when they do the right thing. Not by saying "you suck because you didn't take it far enough". You say "Good move doing X. And when you do Y you'll be doubly awesome."

<comment><USER4> I fail to see how this move is good for end users.

<comment><USER18> The FSF has always been about the long term. This move is actually much less short-term user-hostile than many of their other moves.

<comment><USER19> In long term, H.264 patent will expire.

</comment></comment></comment></comment></comment><comment><USER20> A few points:

> We applaud Google for this change; it's a positive step for free software

Except that it further entrenches Flash in the short to medium term, possibly longer.

> Most of it is delivered with Flash, which is proprietary, nonstandard > software.

Exactly. H.264 isn't going away anytime soon so having a Web browser without Flash gets that much harder. With no native support for H.264 in Firefox or (soon) Chrome, bizarrely the most Flash-unencumbered browsers are Safari and _Internet Explorer_.

Consider that for a moment: _Internet Explorer_.

> Free software alternatives like GNU Gnash are available, but the user > experience isn't always as seamless as it ought to be.

This is a key point but not in the way the author intended and it's worth parsing this statement. The FSF is driven by philosophy here but most users aren't. If you want to attract a plurality of users a necessary precondition is to have the experience be as good _if not better_ than what you're contesting.

There is a cost to switching: finding new tools, learning a new process and so on. Users need a reason to switch and ephemeral arguments about "openness" of video on the Web just don't cut it for the majority, at least not while such a choice comes with a subpar experience.

> In order to make sure the Web stays free for everyone, we need a free codec > to prevail as the de facto standard with HTML5.

Like most future specters I believe this one is overblown too. Everyone points to the GIF fiasco. The net result? PNG was born. If the screws are ever put to us on H.264, you'll see exactly the same thing, only quicker. Computing power being what it is today, the effort of re-encoding every video that exists on the Web is actually not that hard of a problem, and is certainly in the realm of what Google can do today, let alone 5-10 years from now.

> WebM can be that codec: Google provides a patent license with the standard > that is compatible with free software licenses

But it should be noted, there is no indemnity against H.264 patent infringement. I'm not saying WebM violates H.264 patents. The reverse may even be true (or both). But the point is that it is a risk.

> We can only be free if we reject data formats that are restricted by > patents.

The elephant in the room here is that the fundamental problem is _software patents_. They need to be completely abolished.

> But the issue's not settled yet.

No but it's a bit like iPad vs the rest of the tablets. The issue isn't settled yet, but the iPad has a whopping lead and the smart money is on it for some time to come. H.264, like it or not, is more mature and has more hardware and software support than WebM, which is far less mature.

<comment><USER7> You missed the most critical point, which is

"This license is fundamentally incompatible with software freedom. It requires developers to restrict how their software can be used, and to collect royalties in many situations."

And that is what it is all about. H.264 imposes end-user licenses and if it gets entrenched, freely redistributable browsers would lose. The argument against dropping H.264 is basically "why switch formats when what we have works?". H.264 does not work for free software. It's as simple as that. If HTML5 video suffers in the short term, that's the price we'll pay - at least that's the FSF's position.

>Everyone points to the GIF fiasco. The net result? PNG was born. If the screws are ever put to us on H.264, you'll see exactly the same thing, only quicker.

Why wait until a fiasco?

> Computing power being what it is today, the effort of re-encoding every > video that exists on the Web is actually not that hard of a problem, and is > certainly in the realm of what Google can do today, let alone 5-10 years > from now.

Seriously, you're arguing against yourself here. Besides, what of the omnipresent 'hardware decoders' we keep hearing about?

<comment><USER20> > "This license is fundamentally incompatible with software freedom. It > requires developers to restrict how their software can be used, and to > collect royalties in many situations."

 _According to the FSF's definition of software freedom._ The FSF has quite a radical view in this regard. A Microsoft exec once described the GPL as "viral' [1] and it's a fair point. Many view licenses like MIT and Apache as being more free simply because they're not as restrictive.

This ambiguity is more pronounced when you use words like "open" because it means different things to different people.

So it would be more accurate to say that H.264 is incompatible with the _FSF's idea of software freedom_.

> if it gets entrenched

What do you mean "if"? It already has.

> Why wait until a fiasco?

Because anyone who writes software knows that writing code to solve problems you _may never have_ is a recipe for wasted effort if not outright disaster.

It's a bit like the standoff between the (former) Soviet Union and the USA: not a single shot was ever (directly) fired between the two but the threat of escalating conflict kept them in check (resulting in proxy conflicts in Korea, Vietnam, Afghanistan, etc but I digress).

Think about it this way: MPEG-LA could announce tomorrow that licenses now cost $1 trillion. The result? Obviously no one would pay and a new standard would arise pretty quickly. What if it was $1 billion? $100 million? The point here it is simply a question of _degree_.

So what keeps (and will keep) MPEG-LA in check is market forces, the limits of what people can and will pay and the _threat_ of a free or cheaper alternative... much like any market. Switching formats is a process that can be automated so the transition cost isn't really that high.

[1]: [http://en.wikipedia.org/wiki/GNU_General_Public_License#Vira...](http://en.wikipedia.org/wiki/GNU_General_Public_License#Viral_Nature)

<comment><USER7> Ok, here is how I define minimal software freedom - I give you a piece of software, along with source code, you are free to use it in anyway you please, or make your modifications and distribute it to as many people as you like. With H.264 bundled with a piece of software, that is not possible.

> This ambiguity is more pronounced when you use words like "open" because it > means different things to different people.

I never once used the word in my post.

>What do you mean "if"? It already has.

You're arguing for the status quo. Everything seems entrenched until an alternative comes along.

You seem to completely ignore that the H.264 license is directly opposed to free software. There's a reason Chromium never supported H.264, while only Chrome did. Nobody except the patent holders benefits from a de facto patent- encumbered codec.

<comment><USER21> _With H.264 bundled with a piece of software, that is not possible._

The decision to only support bundled codecs and refuse to let the user use anything else was made by Mozilla, Google, and Opera. It is not a spec requirement or technical necessity. The idea that a browser would be forced to bundle h.264 is quite evidently mistaken, as the browsers that _do_ support it _don't_ bundle it.

<comment><USER22> The browsers that do support it run on the platform by the same vendor. IE9 runs only on Vista/7, where MS provides H.264 decoder. Safari runs only with Quicktime, where Apple provides H.264 decoder. So although the browsers do not come with decoders, they use their vendor's decoder and nothing else.

On the other hand, if Mozilla/Opera/Chrome used third party decoder, that would be support nightmare ("It works on my computer, but not on friend's! Please fix it!").

<comment><USER21> _The browsers that do support it run on the platform by the same vendor._

I don't understand the significance. The same APIs are accessible to any other browser. If someone has evidence that Mozilla, et al. have been technically locked out of using the media APIs on Windows or Mac OS X, I'd be interested in the details, and if someone has evidence that they've been locked out of using the media APIs on Linux, I'll eat my hat.

 _they use their vendor's decoder and nothing else_

I'm not sure what you mean. If you mean something like "Windows will only support h.264 and you can't use anything else", then that is exactly wrong.

<comment><USER22> It is not only about APIs, but also about control.

Microsoft can always rely, that IE9 will supports whatever formats they want it to support. They know, that it will play H.264, because they ship H.264 with Vista and 7 and IE9 supports only Vista and 7.

Apple can also always rely, that Safari will display formats they want it to display. They know, that Safari will play H.264, because Quicktime ships with H.264 and Quicktime is bundled with OSX, or with Safari for Windows.

If Mozilla/Google/Opera outsource this to OS, they lose control. They will not know, what the browser will display (imagine handing off control about HTML/CSS/JS to Microsoft, when IE6 was going down and Firefox up. It would be like Firefox using IE HTML control to display HTML).

Another problem from the control perspective is inconsistent support among platforms. Platform A, it will play formats X and Y. On platform B, formats Y and Z. On C, X a Z. Do you see problem here?

<comment><USER23> The handling of a <video> _is_ outsourced to the OS.

<comment><USER22> For IE9 and Safari (except Safari for Windows) is is exactly the case. And because the OS vendor is the same as browser vendor, the effect is the same as bundling with the browser.

That is not the case for browser vendor without their OS. They cannot achieve the same effect.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER24> But isn't it too late? <http://techcrunch.com/2010/05/01/h-264-66-percent-web- video/> This is from May last year, I bet it's even higher now. Say by some miracle that webm takes over, even though it's free, it's a Google run project, and we now that Apple chooses stability over availability (i.e. their rejection of Flash)

From my experience building a HTML5 video playback portfolio for a client, playing high quality webm/ogg is just not doable yet, even via Amazons CDN.

And what i don't get, on a very basic level, are these companies that own these file formats really ever going to cash in on all those files out there? I mean GIF, JPG, PNG are all patented formats, and they are everywhere.

Why doesn't Google announce for example that they will also stop supporting JPG/PNG/GI in favor of their open source WebP format? If they were really drawing bold lines they should be honest about it.

<comment><USER25> PNG is not a patented format. In fact, the patent wars surrounding GIF were a major, perhaps the overriding motivation for development of PNG.

</comment></comment><comment><USER26> Ehh, all of a sudden the pro-WebM side got really lame now that the FSF joined the party.

</comment><comment><USER27> I always saw this as a problem with the FSF. They are urging web site operators to use WebM right away when there isn't even support for them.

They simply sound so naive when they say "Today, we're also urging Web site operators to distribute videos in the WebM format, and abandon H.264". What they should be saying is "Prepare your web sites to transition to WebM".

<comment><USER28> "Prepare" is way too lax. Many will treat it like stick-it note "oh, I have to make sure someday, shall the transition come, my code won't require major rewrites". Like "preparation" for IPv6 support frequently ends with adding more bits to DB fields and adding several stub functions.

Unless you actually get your hands dirty and start _doing_ something, not just preparing, there won't be any _significant_ results.

Sure, FSF is quite radical with "and abandon H.264" part, but "distribute videos in the WebM format" part is perfectly fine.</comment></comment>


M.M.A. Fighter's Pummeling of Tai Chi Master Rattles China - <AUTHOR> https://www.nytimes.com/2017/05/10/world/asia/mma-martial-arts-china-tai-chi.html?action=click&pgtype=Homepage&region=CColumn&module=MostViewed&version=Full&src=mv&WT.nav=MostViewed&_r=0 <comment><USER2> Certainly, there are illusions around traditional martial arts , which is highlighted by this Taichi guy's agreement to such fight in the first place. However, the Chinese reaction is not simply a shock reaction (as the title "rattle" implies), but a deep-rooted cultural reaction. Chinese culture is about longterm wellness, which, in a superficial way, is about face/elegance. It is much more important in Chinese culture to gain respect or to save face, which is of long term value (often beyond one's lifetime). Winning a fight by keep pounding a guy on a ground with no obvious defense is the opposite of elegance (elegance is equivalent to civilization in the culture), therefore, Chinese people would feel definitely not right and the reaction is simply to emphasize their value system: winning with no elegance is not winning at all. In fact, it is worse than losing, highlighted in the following events.

In another word, if the Taichi guy beat the MMA guy by in the end hitting the defenseless repeatedly, the Chinese reaction will probably be the same. While the MMA style does emphasize compounding the weakness, it is probably one of the reasons that it is never popular in China.

<comment><USER3> So would Mr. Xu have received the same negative public feedback if he had avoided the ground and pound, and won without perceived brutality?

I'm having difficulty seeing how this fight could have happened without either some form of KO/TKO, which I assume would have generated the same outrage, or degenerating into a farcical slapfest, which would have lost Xu face anyway.

Am I wrong? Or would Xu have killed a sacred cow no matter how he won? Because let's face it, it was clearly Xu's fight to lose. Xu should just come to America then, we have different sacred cows here.

<comment><USER2> > So would Mr. Xu have received the same negative public feedback if he had > avoided the ground and pound, and won without perceived brutality?

I think Mr. Xu would not receive negative public feedback if he simply stops at knocking Mr. Wei down or simply choke hold (not deadly). After all, the fight was organized and started in a fair mood. I think before the result, most audiences are simply curious. And the ground pounding is quickly stopped and people rush to take care of Wei, which supports my belief on what is the real show stopper.

KO would be acceptable if it is perceived to be necessary, that is, if there were signs that Xu could lose without the quick KO.

By sacred cows, do you refer to cultural value system? If yes, then that is my point. If not, what will be the equivalent sacred cow in America?

</comment></comment></comment><comment><USER4> If you think the Chinese are so sensitive that one youtube fight has suddenly hurt their pride, then you're a fool.

It's about money. The movie industry, the tourism industry, the martial arts training industry.. they'd all be heavily affected if Chinese martial arts were suddenly shown to be just a gimmick, especially if the person proving a point was in-fact Chinese.

It's about power and respect, which in China (and everywhere else) translates to one's ability to make money. "Don't rock the boat". When so much seniority has been earned by so many people, naturally they'll try to maintain their place.

<comment><USER5> What I don't get is how Chinese people don't already know this. I know nothing about fighting at all but from the article and the comments on the NYTimes site it seems it's common knowledge in the west that MMA fighters always win against other styles, it's practically scientific fact. Does the government censor information about martial arts too, or what's going on here? How can so many Chinese people be ignorant of the basic facts of fighting that seeing a fight of the kind that has been happening for decades causes some scandal?

That's the thing we should be discussing here. Not martial arts, but how such an asymmetry in information came about.

<comment><USER2> First to reply the parent claim: the majority of Chinese reactions come from people who receive zero money from the fame of martial arts. Therefore, money cannot account for the overwhelming reaction. To check, who do you think receive money from the kung fu mystery?

Now to answer your question: it is not about the amount of information, it is about one's belief. Belief has to be shaken from within; otherwise, opposite information from outside often only compound one's belief.

The belief in the traditional martial arts is a zen that to most it is an ultimate goal, not a reality. Defeating kung fu practitioners does not mean that true kung fu masters who obtained the zen can be similarly defeated.

Beliefs, culture, and faith are not in the scientific domain. And philosophically, it is questionable that currently accepted scientific domain is superior to beliefs, culture, and faith.

</comment></comment></comment><comment><USER6> It shouldn't be a surprise after the Gracie Challenge showed most of the arts couldn't deliver against well-trained, well-rounded fighters that systematically exploit their weaknesses. My favorite example on someone from a kung fu background is the video below since it shows how helpless they are without ground training. Also, Rorion's excellent narration.

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

Edit to add: "At this point, Royce could apply the choke but he elected not to. There's many variables in groundfighting..." Nah, Royce is just an asshole who was putting another asshole in his place with humiliation. He had a God Complex when I met him that didn't fit his fight record. ;)

<comment><USER7> Except Judo.

There are quite a small number of old martial art that's pretty decent still.

Gracie is just BJJ which is just an offshoot of Judo anyway with more emphasis on ground. So I'm not sure if it really counts as MMA would he just uses his school of Martial Art.

<comment><USER8> > There are quite a small number of old martial art that's pretty decent > still.

could you mention a few more? And distinguish if its possible which of those were generally practiced as highly competitive full contact sports (within their rulesets of forbidden strikes etc), and which mostly as a martial art?

</comment></comment></comment><comment><USER9> >Tai chi, while a martial art, is viewed by many today as a spiritual breathing and balance exercise enjoyed by people of all ages, usually performed in slow motion in a quiet park instead of a fight ring.

Tai chi is a martial art in the same way yoga is a martial art. I'm kind of surprised this gets more than a shrug out of Chinese people. I would be surprised if a practitioner of one of the more practical Kung Fu styles could beat a good MMA fighter, but it would have been a lot closer.

</comment><comment><USER3> Traditional martial arts can be quite effective if practiced in an effective manner. I've been to traditional schools where the pinnacle of training involved fighting each other bare knuckle.

As amusing as it would be to see a tai chi practitioner systematically progressing to bare knuckle tai chi sparring, perhaps their art could be more effective if it were trained more aggressively.

</comment><comment><USER10> The belief in chi/qi power is deeply rooted in Chinese martial arts. Something that has no scientific basis.

The point here is not which fighting style is better, but that the tai chi master does not have any mystical or superhuman chi power he can draw upon to defeat his opponent. This is "the fraud" Xu Xiaodong wished to expose.

</comment><comment><USER11> Pride cometh before the fall - Chinese people. If it is untested it doesn't work - martial arts. It's hard for someone to recognize a falsehood if his livelihood depends on it - martial arts schools.

Money attracts talent. There is relatively little money in traditional martial arts. No money results in little talent.

That MMA fighter looks fit. That martial arts guy does not and looks totally unskilled backing up. You have no power in your body and legs backing up like.

Those raised arms are completely worthless. Tensed muscles cannot react. They need to release tension first thus slowing down reaction time.

Lessons from my father who was in the army when soldiers liked to fight each other.

</comment><comment><USER12> Dupe: [https://news.ycombinator.com/item?id=14316091](https://news.ycombinator.com/item?id=14316091)</comment>


Postal Service Looks To Cut 40,000 Jobs In First Layoff In History - <AUTHOR> http://www.ksla.com/Global/story.asp?S=9247633

<comment><USER2> About time.</comment>


Microservice Discovery with SkyDNS - <AUTHOR> http://blog.getadmiral.com/communication-between-microservices/ <comment><USER2> I'm excited for all the buzz going on around service discovery, it's often one of the most crucial design decisions for a SOA architecture. I'm really bummed, however, that so many of them rely on clients doing DNS lookups. I vastly prefer a system like airbnb/Yelp SmartStack, consul template, or really any system that reflects discovery state in real load balancers such as HAProxy, nginx, or even those new fangled service load balancers like vulcand.

Honestly just don't do DNS. Why?

1\. Performance

Service discovery should not happen during the life of a HTTP request. The number of times that I've had to debug performance problem that ultimately ended up being DNS requests taking like 100ms (which for most internal applications is too damn long) is staggering to me. Yes you can mitigate this, but it is not easy because even local DNS has to miss the cache sometimes.

2\. DNS propagation sucks.

This article talks about one side of the DNS propagation problem ("it's down" -> removed from DNS), but they seem to completely ignore the other side of the DNS propagation problem (removed from dns -> clients stop talking to it). At any kind of reasonable engineering scale one of your libraries (watch out for ones that cache DNS "for performance"), programming languages (java), or infra tools (nginx/haproxy) are going to not re-resolve DNS like you expect them to.

3\. More Performance

Client side load balancing is legitimately hard, and if you're just doing round robin over DNS records you are likely screwing your high percentiles. HAProxy/nginx/vulcand/etc all support better load balancing strategies like least connection load balancing that really make a difference here. This can be the difference between a 500ms 99% and a 50ms 99%.

<comment><AUTHOR> These are very good points. I'll be honest, I don't have a lot of experience with SmartStack, but I'll be reviewing it.

As far as caching, ideally you'd have no caching, however, certain optimizations can be made on this front, such as combining in-flight-and- duplicate queries.

Load balancing could be done via the SRV records, but that would be difficult since it requires that you republish the SRV record. This could be done every minute or so based on load but not on a per-request basis.

Thanks for your insightful comment!

</comment></comment><comment><USER3> SkyDNS is pretty nice, but I'm not sure I see a huge value in layering DNS on top of etcd for microservices, unless you also standardize the SRV format being used. Why not just use etcd directly?

After all, the format has a proprietary format/structure that no tool (outside the SkyDNS sphere) knows about. So you've already invented a new protocol on top of DNS. You're not able to leverage any existing tool/library out there that resolves names via DNS, because they can't use your information. (SkyDNS can of course be used to look up A/CNAME records, which I totally agree is nice, but as more of a backwards-compatibility layer kind of thing.)

You do get some value from libc's name resolution, and you can institute a policy across your apps that they resolve subdomains relative to the domains listed in resolv.conf, so for one app to talk to another, they just look up "fnord", which resolves to "fnord.dc-east.production.example.com" or whatever. But I'm still not sure I see a lot of value over a client library that talks directly to etcd. You're going to want a client library anyway, to deal with those SRV records.

<comment><AUTHOR> You bring up good points. The big advantage I see is the ability to fallback to standard tools if you don't want to use SRV. If I want to debug something I can just type "dig SRV myservice.mydomain" and see the results. I can also just use standard DNS libraries to do just regular A lookups if you don't care about priorities. For anyone else that does, we've released a bunch of libraries so they don't have to do anything to start using it.

I also wouldn't say that SRV records are proprietary, they're an official record-type (that many DNS providers support).

Personally, I just don't see why anyone should be creating their own format when some other established and compatible one exists. DNS is already widely used for domain/website discovery, why should that not be extended to inter- datacenter discovery? That's obviously rhetorical for this conversation, but that's what we asked ourselves.

<comment><USER3> Ah, you're right — for some reason I was under the impression that the format of a SRV record was specific to the protocol, but apparently it isn't. My thinking was confused by the fact that SkyDNS apparently doesn't use the standard name format, as specified by the RFC:

        _Service._Proto.Name TTL Class SRV Priority Weight Port Target

[1] [https://tools.ietf.org/html/rfc2782](https://tools.ietf.org/html/rfc2782)

<comment><USER4> SkyDNS supports whatever naming scheme you want to use. You set the names yourself. That means it can be compliant with RFC2782 if you choose, or the names can be semantic -- like Kubernetes uses, with each position in the name implying a semantic meaning "servicename.kubenamespace.domain"

Disclaimer: I invented SkyDNS.

</comment></comment></comment></comment><comment><USER5> Well, adding a library for supporting SRV records is not simple... If you use Weave [1], it gives a unique IP address to every service instance and a DNS record, all with zero configuration. That means you just stick any service in whatever default port it has, and it's all good. You can also have round-robin load balancing through DNS for free.

[1]: [http://weave.works/net](http://weave.works/net)

<comment><USER6> The performance penalties seem pretty significant at least as of a few months ago. Has that changed?

</comment></comment><comment><USER7> SkyDNS is a very useful tool, but the name is very confusing.

Everytime I read "SkyDNS", I think it's about skydns.ru

</comment><comment><USER8> IMO - better to have etcd drive Nginx/HA Proxy via confd. This is flexible, fast, and performant. While it could be a coo idea to push load balancing logic entirely to the client to eliminate a load balancing tier altogether - DNS isn't really designed for it.

</comment><comment><USER9> Definitely a cool idea! And it sort of works, but then if you need to remove failed services quickly you need to use a non-DNS interface for it :)

<comment><AUTHOR> Failed services are automatically removed when the associated service "dies" or closes its connection with skyapi. If you're using holdingpattern then it's removed whenever the service stops. This is only because we wanted the removal to be quick and automatic.

</comment></comment><comment><USER10> What's wrong with actual DNS?

<comment><AUTHOR> I'm not sure what you mean about "actual DNS" but I'm going to assume you mean A records and not SRV records. A records are available for all services as well with this set up we just preferred to use SRV so we can get port information as well as weighting. If you want to stick to just A records that's definitely an option.

<comment><USER11> Well an actual DNS server, Whats wrong with authoritative DNS? just use DNS NOTIFY to update slaves on record change.

That way TTL is not a problem, unless you have SSSD or nslcd doing caching on the client.

It'll remove a massive layer of complication, and will mean that you can have redundant service discovery even if your ETCD/skydns fails.

It'll certainly scale much, much higher than skydns. if you don't want to create your own DNS, Use Dyn. It has a REST interface, a very nice SLA. if you query the servers directly you also don't have to worry about TTLs

<comment><USER5> Right, if you know how to set it up or have infrastructure in place... But most developers don't have time to read 600+ pages on how to run bind server OR simply have ops team that is very conservative at what goes in the DNS land.

<comment><USER11> just buy it in? dyn have a REST API.

failing that, bind is not difficult to learn. If you have an artificial divide between your devs and you, then you have far bigger issue. If you can't convince them of the merit of using DNS then there really is no hope.

the whole point of DNS is that you can delegate subdomains, so you can neatly isolate zones from each other

Plus saying something _looks_ hard is a terrible justification for not trying something. I know bind isn't trendy, but it works and is simple. Failing that, there are at least 3 companies out there with REST APIs and 100% uptime SLAs.

prototype all the things!</comment></comment></comment></comment></comment>


How long does it take to install and try Quicklisp? (a gif screencast) - <AUTHOR> http://www.quicklisp.org/beta/screencast.gif what really caught my attention, is that is a gif image screencast <comment><USER2> Note that the first part (the one before he types "(quit)") is something you have to do only once - to set up the system itself. Any library in the distribution will install as easily as cl-ppcre did.

With all the talk about "curses" going on right now, I'm pretty happy we lisp hackers actually have something available that integrates so much high-quality software so well.

</comment><comment><USER3> I think quicklisp is a great system, but didn't asdf do the same thing? It would download and install packages for you just like ql, so I'm wondering what the obvious advantages of ql are over asdf-install, other than being the hot new thing.

<comment><USER4> There are a number of ways I think Quicklisp improves on asdf-install. Here are a few:

* Quicklisp centralizes metadata and project archives, so you don't have to rely on a world-writable wiki and 10 random servers on the internet to install a project

* Quicklisp doesn't need any external programs like tar or gzip

* It works nicely on Windows

* There is a level of integration testing before projects are published; it's not much, but it's way better than nothing

* It works with projects that don't go through a formal "release a tarball" process

* It can be installed by loading a single Lisp source file

* It's not named asdf-install, so not confusing people about where asdf stops and asdf-install begins

The main way they do the same thing is at a very high level. I think Quicklisp gets more of the important details right.

<comment><USER3> Thanks for the good response. I'll be taking a closer look into ql as soon as I can.

<comment><USER4> Also, you can have it both ways: asdf-install is installable via Quicklisp.

<comment><USER5> and to add to this, they play nicely together, so you can asdf-install a new local version of a package available through quicklisp, and (require 'that- package) will load your newer local version.

</comment></comment></comment></comment></comment><comment><USER5> Great to see quicklisp mentioned here. Hopefully this will stem the tide of "but common lisp has no libraries/package-management systems" comments.

<comment><USER6> Better late than never.

</comment></comment><comment><USER7> It's nice to see that I'm not the only one left using that font ( -misc-fixed- medium-r-semicondensed--13-120-75-75-c-60-iso10646-1 ) for my terminals. Anything else bugs me.

<comment><USER4> I normally use 7x14, but used 6x13 to get a slightly smaller terminal for the screencast.

<comment><USER8> Off-topic; how did you make the screencast?

<comment><USER4> byzanz-record with some manual cleanup in GIMP.

<comment><USER9> it's cool but i kept wanting to pause it any couldn't

</comment></comment></comment></comment></comment><comment><USER10> If you know exactly what to type.

<comment><USER4> What to type is documented at www.quicklisp.org.</comment></comment>


Why is reading lines from stdin much slower in C++ than Python? - <AUTHOR> http://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python <comment><USER2> Back about 15 or more years or so ago, I wrote all my small utility programs in C. These were typically small programs, but I often had a lot of (text) input data in the form of netlists. I started reading about C++, and getline() and some of the containers (that I had to build from scratch in C), so I decided that C++ was for me. There were a number of disappointments, but a big one was that C++'s getline() was _more than an order of magnitude_ slower than fgets() (on my system etc., etc.).

With some experimenting, I discovered that even Perl was much faster than C++ with getline(). (Note that this was input of a file, not stdin as in this article.)

I've not used getline() since.

<comment><USER3> getline() works for (single) character delimited reads and lets you use a std::string. The latter is reason enough to use it: it means you don't have to worry about manual dynamic memory allocation and have zero risk of overflows.

In any case, the C++ equivalent to fgets is sgetn on the underlying streambuf or filebuf - [http://en.cppreference.com/w/cpp/io/basic_streambuf/sgetn](http://en.cppreference.com/w/cpp/io/basic_streambuf/sgetn) . I'd use this before I used fgets, if for no other reason than I then don't have to remember to call fclose()

The fact that you haven't used one of the most trivial functions in the standard library because of a slight performance penalty 15 years ago is worrying.

<comment><USER4> What are you worried about? An order of magnitude is not a slight performance penalty. The C++ standard library is vast and we've had c++98, c++03 and c++11 in the 15 or so years. There's few enough parts of it that you'll revisit regularly. You can't go around expecting people to be experts in the minutiae of all of it.

<comment><USER5> If both the C++ and the Perl code had the same performance I'd stick with the Perl version.

</comment></comment></comment></comment><comment><USER6> Fun fact: the solution of using `cin.sync_with_stdio(false);` introduces a fairly unimportant memory leak that you'll see when you use Valgrind. The behavior was reported as a bug ([http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27931](http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27931)) but it's actually part of the C++ standard not to clean up standard streams. (Edit: Here's the page of the standard in question, see the end of the second paragraph of 27.3: [http://imgur.com/P7wYcHn](http://imgur.com/P7wYcHn))

<comment><USER7> A "leak" normally implies something that will get worse: like, as you use this stream, the stream will slowly lose memory or something. The standard is simply saying that when the program exits the stream objects themselves--and therefore the buffers they use--will not be destroyed: but of course closing the program will destroy them... the developer who closed the bug even put "leak" in quotes as this is more an artifact of valgrind's definition of "leak" than even an "unimportant" issue in the behavior. (I want to clear this up, as I can imagine people reading what you are saying and then avoiding this feature as they are concerned that their extremely-long running program will eventually exhaust memory.)

<comment><USER6> You're right, of course. My original comment did put quotes around 'leak', but I figured someone would come along and argue a leak is a leak even if it's not going to crash your program. Oh well. :)

<comment><USER7> This isn't a "leak": a leak is a leak, and this isn't a leak... this is just something Valgrind is reporting because it could be a leak due to exhibiting a pattern indistinguishable from something that actually was leaked from the perspective of a tool that only is able to work from a dynamically maintained list of heap allocations and the event "program has now terminated". Saying this is a leak is somewhat equivalent to claiming that because the executable code itself wasn't deallocated by the program before it exited the code was "leaked": it just so happens that as an implementation detail this data structure is lazily dynamically allocated, but it should be considered a static part of the program. In a world where things Valgrind reported were "leaks" as opposed to simply "outstanding heap allocations" then I'd be happier claiming this was a bug in Valgrind than claiming that this feature of the language standard should have the word "leak" used to describe it ;P.

</comment></comment></comment></comment><comment><USER3> tl;dr: C++s standard streams (cin, cout, cerr, clog) may be used alongside code using the underlying libc i/o streams API and therefore, by default, synchronize with libcs own buffers. In the very least, this means you don't end up with output resulting from characters interleaved between individual stream operations via the two sources.

Its worth noting that even Cs i/o APIs are typically synchronized across threads so you can output lines to stdout without experiencing the same issue within just vanilla threaded C code.

<comment><USER8> I think you can unlink it:

        std::ios_base::sync_with_stdio(false);

<comment><USER9> That's what they did to fix it.

</comment></comment></comment><comment><USER10> This is an old discussion, but I actually have this thread bookmarked so I can show young programmers the dangers of assuming that if you write in C++ it will be faster then everything else out there.

<comment><USER11> Seems like an odd conclusion to reach given that the end result was C++ being faster.

Nobody ever claimed that C++ didn't require more knowledge to use effectively.

<comment><USER10> Actually C was the fastest, by a fairly wide margin, however hat doesn't matter much since you can make the C++ faster and you can make C go just as slow as the input buffered C. There are still lots of people who think that speed is solely a function of programing language with very little impact from program design. Like I said I like to bring this out when showing newer developers that no matter what language you pick you need to be aware of what is going on in the background and most importantly you should test you code before trying to assume what parts are fast and what parts are slow.

<comment><USER3> Yes indeed, and many don't realize that C streams are also buffered and can also be tuned:

[http://www.gnu.org/software/libc/manual/html_node/Buffering-...](http://www.gnu.org/software/libc/manual/html_node/Buffering- Concepts.html)

[http://www.gnu.org/software/libc/manual/html_node/Controllin...](http://www.gnu.org/software/libc/manual/html_node/Controlling- Buffering.html)

there are also threading issues:

[http://www.gnu.org/software/libc/manual/html_node/Streams- an...](http://www.gnu.org/software/libc/manual/html_node/Streams-and- Threads.html)

glibc even lets you implement custom streams (FILE* handles that will work with fgets etc. but call your own source and sink to do i/o)

</comment></comment></comment></comment><comment><USER12> tldr; when performance is important, don't just use defaults, optimize. And learn how libraries and your OS work deep down at low levels. Even Python's default IO performance can be improved in many cases, by changing buffer sizes or even bypassing the file io susbsytem and using memory mapped files. But no solution is right for all use cases.

Like they tell you in school, premature optimization is the root of all evil. So don't worry about this until you need it.

</comment><comment><USER13> Thought I'd throw a point(er) alongside these comments...

Isn't the Python interpreter written in C?

<comment><USER14> Straightforward C is slow; straightforward python is medium speed; expertly written C (the foundations of python) is fast

<comment><USER2> > Straightforward C is slow;

I've never found it to be so, and it's not a common complaint.

</comment></comment></comment><comment><USER15> tl;dr It is not.

</comment><comment><USER16> One of the first questions I asked myself years ago in C was what's the difference between open, read, write and fopen, fread, fwrite. Buffering.</comment>


Ask HN: Offered new job position, no pay rise. What to do? - <AUTHOR>

Hi HN,
I've been working as an Application Manager for a few years now, basically babysitting a couple of enterprise applications, doing a little development and fixing lots of things when they break.
I'm actually a Software Engineer and am way overqualified for this position, but I'm in a very remote place, so options are limited.
We've been working on a "promotion" or "more senior/technical" position for a long, long time, and the offer letter finally came across my desk.
The description is much more senior, much more responsibility and accountability for performance and systems. It's also got components of mentoring younger staff and being on call (yuk!).
The salary they're offering is identical to what I've been on for the last 2 years. No extra benefits or anything.
Their justification for this is I'm at 100% of my benchmark for my current role, so I can't get a raise. In the new role, my current salary is only around 85% of the benchmark, so I would be eligible for a raise when those discussions come around again in a year.
I feel like they're trying to get me to do this without adjusting my pay accordingly.
How can I word my reply in such a way to make it sound like I'm very interested, and really want my career to progress, but I also expect (deserve?) a pay rise.
Thanks, <comment><USER2> The reality of compensation is that, contrary to the expectations of virtually every tech employee in the universe, it is completely decoupled from job responsibilities and titles.

Compensation is set by supply and demand, and the way those forces augment or sap your negotiating leverage.

Almost every workplace in tech has some set of procedures for routinely adjusting compensation. If you're happy with your comp, you can let those processes grind in the background and get on with your life.

If you're _unhappy_ with your comp, those processes are a trap, and you should (briefly) ignore them. Instead, figure out 1-3 strong arguments for improved compensation. Changes in job responsibility are one good reason; changes in the market are at least as useful. It helps to seem irreplaceable. The reasons you might be perceived as irreplaceable change from quarter to quarter; try to keep track of them.

When your manager appeals to them, politely dismiss them: say something like, "I understand why the system works the way it does, but in this case I think the system isn't capturing my current value. I like my work here too much to allow a process snag to make me unhappy. Because of [REASONS], we need to special-case this conversation. What arrangements can we make to work this out?"

Your manager doesn't want to give you an out-of-process raise. At least one of their reasons is valid: if they develop a reputation for giving out-of-process raises, the whole system goes to hell and the team becomes impossible to manage; perversely, being disorganized but occasionally generous with comp can _increase_ turnover. Defense of process is likely to be your manager's primary objection to giving you a raise (the money probably won't be; it's not their money they're allocating to you).

So anticipate that. Be ready to negotiate for something other than an on-the- spot raise; instead, you can nail down a series of short/medium term milestones. "I'm at 85% of our benchmark compensation for my new role [note: benchmark comp is a fiction]. I'm new to the role, so I understand why you might not want to offer me an immediate improvement. All we need to do is bridge the gap between now and next year's review. Can we come up with targets to hit so that we can do an early review next quarter?"

On a good team, there is nothing your manager is more worried about than turnover: again, supply and demand. The naive way to exploit that fear is to get an offer somewhere else and use it as leverage. This will backfire; unless your management is not only excellent but also very, very in tune with your career (unlikely!), they'll just flip the "damaged goods" bit. They might placate you for a few months, but their new goal --- totally rational --- will to make sure you're not irreplaceable anymore.

So, like I said a few paragraphs ago, find a way to appeal to the turnover concern without putting a gun to their head. "I'm happy, but I could see not being happy in a few months if the situation stays this way" is a little on- the-nose, but it's better than (a) nothing or (b) an ultimatum.

</comment><comment><USER3> Sounds obvious to me. Negotiate something better. If they can't provide it, then find something different.

> I'm actually a Software Engineer and am way overqualified for this position.

I think this is a myth. Nobody is ever overqualified for the position they are in. Getting where you want to be in life requires X skills (which includes way more than just tech) and circumstances. Your mix got you right where you are at. You are exactly qualified for your situation. Also, no matter what your skills, you will never be so highly skilled that you master people and life. Perhaps your issue is that your skill base isn't well enough balanced. Maybe you need to spend less time bolstering your tech skills and more time on bolstering your people skills.

> How can I word my reply in such a way to make it sound like I'm very > interested, and really want my career to progress, but I also expect > (deserve?) a pay rise.

Pour a 40 for careers, they are dead.

Personally, I would probably walk. Negotiate your way out the door to see if they are willing to give you a substantial raise. If they aren't willing, then the value simply isn't there. Bottom line, if you are making the company money, they will go a certain distance to keep you. If you want to be making more money, then you need to be looking for a gig where the value is greater.

If you are afraid you can't get another gig, then you should probably start looking real hard at fixing that. There are a lot of places which provide remote gigs. Start looking around at what's out there and start connecting with people.

Don't think too linearly though. You haven't had a raise for 2 years, you would be moving to 85% and lots of other people have already walked. It appears to me that you aren't going to be making much more money either way. If you dig the job, you are itching for the new position, and the money is okay, then take it.

ETA:

Disclaimer, I'm a freelancer, so moving from one project to another is normal for me. My advice might not be so great for you. ;)

</comment><comment><USER4> Wow... to be honest, it sounds like they think you might be a fool.

Here's how my instincts tell me to respond:

"Only a fool would accept increased responsibilities and the addition of being on call without more compensation. If you honestly can't afford to increase pay at all, I'd prefer to stay in my current position and continue to do the bang-up job I've been doing. If you can afford something, let's talk."

But my instincts usually get me into trouble, so I wouldn't actually say that without taking the time to think things through.

Thinking things through a bit more, I can only come to one likely conclusion. Honestly, they already think you are a fool... and are just trying to get more work out of you. What rational person would go from 40 hours a week to 40+?? hours a week (if you don't think being on-call is working extra hours, you've never done it) plus new jobs like training other people, and no additional pay?

I'd be scared if I were you. Either they are entirely stupid (possible), or they just flat out don't need you at all and consider you expendable/replaceable with the next coder that walks down the street, or they would never even ask something ridiculous. Or you've demonstrated them in the past that you were willing to accept ridiculous things, I dunno.

Are you sure they need you? If so, you have some room to be polite and not burn any bridges but stand firm that more responsibility will only be accepted with more compensation. If they don't need you, they are playing you and you should keep your mouth shut while looking for a new place to work. (and not accept the promo in as few words as possible)

Personally, I'd probably confront them about the absurdity of their proposal, but I tend to be direct like that, everyone knows where I stand when I work with them and I'm not afraid to say unpopular things. It's gotten me into trouble plenty of times; I don't necessarily recommend it.

Do what _YOU_ think you should do, not what some stranger on the internet says. (Though sometimes I agree it's useful to hear a variety of opinions to see if you've missed any angles)

EDIT: Okay maybe I wouldn't confront them. At least not for a few days, I'd let myself cool for a while and think about it. Please don't read my post and go confront them and get fired, if you need the job that is. But don't voluntarily agree to make yourself miserable with more work for no additional benefit.

<comment><AUTHOR> Thanks for the honest thoughts, I appreciate it.

Absolutely, I need to do what _I_ think is right, I guess I'm asking for other opinions because I don't know if I'm the one being unreasonable, or if they are, and it's nice to get a few other perspectives.

I just spoke to a good friend at work here who I trust, and he said the same as you. They're treating me like a fool, and there is no way I should take it.

There is a little history - I'm an immigrant, they helped me get Permanent Residency, and I've always been underpaid. The company has a chronic history of underpaying and undervaluing tech people.

They need me, no doubt about it, but they're also letting a lot of very, very good people across the company walk out. Three friends in the last three months have stood their ground and eventually just walked out, the company didn't try to offer them anything to stay on, even though they're doing the work of 10 people and are basically irreplaceable.

I think I'll go for the polite yet firm "It's not reasonable to ask me to take on increased word, responsibilities AND be on call with any extra compensation at all. No thanks".

<comment><USER5> > I'm an immigrant, they helped me get Permanent Residency, and I've always > been underpaid. The company has a chronic history of underpaying and > undervaluing tech people.

Whatever you are considering at this time, please please please do not think in terms of gratitude for this company. They brought you to your current job because of your utility. They are NOT in the business of helping immigrants. At worst, if you leave, another immigrant will get their chance at a Permanent Residency.

> Three friends in the last three months have stood their ground and > eventually just walked out, the company didn't try to offer them anything to > stay on, even though they're doing the work of 10 people and are basically > irreplaceable.

I would start looking for other options EVEN IF they offer me better compensation/benefits etc. Any time someone more can leave, leaving you with like double or triple the work. We can be almost sure there are no stock options etc. in your company for tech people. You can't go on negotiating pay every few months. It is hard, and makes you look very selfish: "the company is in a constant 'crisis', and this guy just wants increased comp/benefits." (No matter how self-made the crisis is)

</comment></comment></comment><comment><USER6> In my experience, a pay-rise is rare unless there is direct pressure from you, or the company believes that they'd be worse off if you were given a better offer elsewhere.

If you have no leverage, then it's not in the company's interests to pay you any more money. It sounds like you've at least queried the lack of a pay-rise, so some options might be:

1: Demand a pay-rise outright. You're being asked to take on more responsibility and accountability with a 'promotion'. It's only fair that your greater sacrifice is rewarded with greater compensation.

2: Negotiate terms of your new contract - additional benefits, or a guaranteed pay-rise after x amount of time, or something else you'd like.

3: Find an external offer, then use that as a negotiating tool. If they really want to keep you, they'll find a way to strike a deal. If not, then at least you can move elsewhere.

Basically this argument that 'you're 100% at your current level, but only 85% at the next level' is bollocks. If the new role is more responsibility, more accountability, and generally more demanding and difficult to do well, then that should be reflected in the compensation. No ifs or buts - anything else is simply taking advantage of people.

A lot can happen in a year - particularly the stresses of taking on more responsibility and having to be more accountable - do they really think it's fair that you should be forced to do this for no extra pay? In a year, what's stopping them 'promoting' you again to an even more difficult job but where you're only at '50% of the benchmark'?

It's a load of horse-shit.

</comment><comment><USER7> You might view this as a chance to get some experience negotiating. Talk with them more to see if there is something to sway you more in a direction. The least to come out of it is a chance to practice a skill that almost everyone sucks at.

When negotiating show up with a basket of items that can be on the table. Extra time off (vacation/personal), company paid training, company time to work on pet projects, travel to conferences, better computer/software, small budget for discretionary purchases, assistants or interns, business paid internet to home, etc. They might be truly stuck on the pay issue but there may be something that can make your job easier given the extra responsibility or recognize that this is a promotion. Flexibility on what you are willing to take helps keeps the negotiation conversation going and gives them something to work with.

Make up a package that suits you and bring it to them (something that really suits you not something you think they will accept). Have them respond and see if they come up with any new ideas.

Then go through the rest of the process; pros and cons, selling yourself vs letting down the company, other issues everyone dwell on to come to a decision like this.

edit: When putting together your package, include a pay increase even though they already said it was not possible.

</comment><comment><USER8> Just went through this. Initial talks pegged a raise for going from department A to B at ~12-15%. Increased responsibility, etc. They (my manager, new manager, and CIO) signed off on it to move me to B. I was told there was no raise, it was a lateral move. They never told me this prior to moving me and I didn't sign anything. They wouldn't give me 5% no matter how much I argued. I found a new job, 30% over what I was making. I gave my 2 weeks, they offered to match instantly.

</comment><comment><USER9> If your responsibilities increase, and you're charged with more risk of failure (larger projects, more $$$ at stake to the company), then yes, you deserve more pay. You're earning it.

It's perfectly reasonable to ask for more money every pay period OR if you trust them, take it as future raise or bonus (say at end of the year).

You can also ask to have some metrics that will generate a salary commisurate with the job that determine your final end of year pay. e.g. productivity, successful launch etc...

If you determine those firm metrics up front and you hit those targets, you get a bonus, negotiated up front.

In that scenario, they can mitigate their risk that you might not perform in the 'higher' role.

Most, if not all, business people expect some pushback and a negotiation. It's not only commonplace, it's a sign of mutual respect.

Don't be afraid to say "Yes I can do that, but I will need X to make that happen"

<comment><AUTHOR> > Don't be afraid to say "Yes I can do that, but I will need X to make that > happen"

Should I go in with a dollar amount in mind, or is it OK to just say "I'm going to need more than your offer".. and see where it goes?

</comment></comment><comment><USER10> My fiancé was recently in a similar position. His salary was at 105% of his pay grade and he was working a pay grade below his colleagues. He was interviewing for a position that required relocation and was 2 pay grades above his own.

He interviewed and got the job and blew them out of the water. Because they only do pay grade bumps once per year and you can't go above 105% of your grade's max salary, he was offered the position without a raise.

Relocation to a new city with a slightly higher COL, without a raise. Crazy. Needless to say, he turned down the position.

Anyways, my point is that you're not alone here. It seems to happen more than I had realized.

</comment><comment><USER11> It's important to know that salary negotiations are best done when you take time to research and practice. In addition to salary, you can also ask for additional PTO, Continuing Ed, Industry Conferences/Workshop attendance, etc...

Here's a good read > [http://www.forbes.com/sites/laurashin/2013/06/26/new- grads-h...](http://www.forbes.com/sites/laurashin/2013/06/26/new-grads-heres- how-to-negotiate-your-salary/)

</comment><comment><USER12> Take the "promotion", be sure to put application manager and "promoted to senior x" on your resume and leave to get your raise after three months. Done.

<comment><USER13> I concur, if all else fails this might be the best strategy. The title might be valuable to you in the future.

</comment></comment><comment><USER14> The first advice I'd offer is, find out how much you are actually worth. You mention that you are overqualified for your current position and that your options are limited. Both of those things hint at an employment situation that is in your employers favor. Find out if your current skill set/job market are actually weighted that way (I'd be surprised if that were true given most dev job markets currently, but it might be).

Go out into the job market and talk to people who have jobs you are qualified for and find out how much they make. How does that compare to what you are making? If there are no people in jobs like that near you that is also a signal.

Once you know how much you are actually worth, negotiating for that level of compensation is usually pretty easy.

</comment><comment><USER15> "I'm in a very remote place, so options are limited."

This is the challenge. If you had other options then you can genuinely use them as a negotiating tactic. E.g. "I'd love to stay here. The team and culture is great. But I am also curious about company X and they're offering me 20% more..."

Can you explore working remotely for someone else, perhaps as a lead engineer?

</comment><comment><USER16> I'd suggest a combination of tptacek answer (take the so-called promotion and try to position yourself for a raise in 6 months) while looking for somewhere else, since the company doesn't seem to be the best place to work as a programmer, according to what you say.

You'll be able to sell your promotion better that way.</comment>


Swapping faces using OpenCV and Dlib - <AUTHOR> http://faceswap.io/ <comment><USER2> [http://faceswap.io/share/zIGvDroL](http://faceswap.io/share/zIGvDroL) You're welcome :)

</comment><comment><USER3> Mark Hamill switched with Mark Hamill: [http://imgur.com/lOAHtLb](http://imgur.com/lOAHtLb)</comment>


B of a won't tell you when your own account was hacked without warrant or subpoena - <AUTHOR> A loved one recently had the surreal experience of logging into their online banking account to find that key account details had been manipulated without authorization. Specifically, a new phone number and email address had been added, and the type of the existing primary phone number had been changed. The account had been hacked, and the hacker appeared to be in the process of laying the groundwork necessary to assume exclusive control of the account.
Almost immediately, the question arose: when did this happen? This is not just a matter of curiosity. The unauthorized access would have provided the hacker with details on thousands of private financial transactions, each potentially connected to one or more other people. If anyone else suffered some level of exposure because of this breach, there is a moral obligation to advise them of such. To get an idea of the scope of exposure, it's important to know when the attack occurred. Bank of America obviously has this basic, non-identifying information. But in the event of an attack, will they share it with the affected customer? Having just been through this process, the answer is very disconcerting: "no, not without a warrant or subpoena".
The only rationale I can imagine that seems remotely understandable makes me equally uneasy: the less a customer knows about an attack on their own account, the more difficult it is to identify potential negligence on Bank of America's part that made the attack possible.
An interesting example of customer-hostile priorities by a large retail financial institution -- but as we search for a new bank, I'd love hear of others, along with any known remedies. <comment><USER2> Sounds about right....

Credit Union all the way. Never looked back!

BoA = Bend Over America. Take all your money out and put into local credit union.</comment>


Users whose names violate Lyft community guidelines - <AUTHOR> https://twitter.com/kateconger/status/1207775775853699072 <comment><USER2> We've certainly come a long way since [https://www.cnet.com/news/food-domain- found-obscene/](https://www.cnet.com/news/food-domain-found-obscene/) \- or have we?</comment>


Ask HN: How relevant are graph databases/technologies today? - <AUTHOR> <comment><USER2> At Pinterest we have a graph db developed internally called Zen. If you just search on google you'll find a lot of docs and presentations. It's used all over the places, if you search in our engineering blog you'll see it mentioned constantly.

In terms of applications using graph, my favorite one is our recommendation engine: [https://medium.com/pinterest-engineering/an-update-on- pixie-...](https://medium.com/pinterest-engineering/an-update-on-pixie- pinterests-recommendation-system-6f273f737e1b)

Another very interesting (and very recent) application of graphs in security is Cartography by Lyft: [https://github.com/lyft/cartography](https://github.com/lyft/cartography)

(I'm on the go, please excuse the lack of links for Zen)</comment>


DevArt Art Made with Code - <AUTHOR> https://devart.withgoogle.com/#/

<comment><USER2> Nice site. I saw this project and knew it had to be eigenfaces: [https://devart.withgoogle.com/#/project/16569221](https://devart.withgoogle.com/#/project/16569221)

Eigenfaces is a very old technique for doing this (it was old when I implemented for the first time in 2000) and as you can see the results are rather blurry. It only takes about five lines of code in a matrix language -- collecting data was the main issue I recall.

If nothing else this serves as a good example of the value of framing your work. Done in a machine learning / stats context eigenfaces is not much more than a nice blog post (e.g. [http://jeremykun.com/2011/07/27/eigenfaces/](http://jeremykun.com/2011/07/27/eigenfaces/)) or class project. But ... present it as an art project and you get frontpage on Google's new site.

<comment> m-photonic Very interesting. What if you took a large set of musical notes on various instruments, with about a two-second duration, with the same pitch, same volume, and same sample rate, and did the same thing? Eigensounds! And that's just with a time-domain representation of the sound -- you'd get different eigensounds if you used a frequency-domain representation.

I have to wonder if something like this is used by those song-recognizing apps that can tell you what a song is just by hearing a snippet through your phone.

</comment></comment><comment><USER3> Ah, Google DevArt. I partecipated last year and my project got a weekly feature award from the judges (every week they'd pick a promising project for that) but sadly didn't make in the final selection.

For some reason my project was pulled from the website after the competition ended, I tried to contact them about it but with no success. The project is on github, for those curious: [https://github.com/MegaLeon/devart- arsmatrix](https://github.com/MegaLeon/devart-arsmatrix)

</comment><comment><USER4> I wonder when they'll acknowledge the OG art made with code people and link to this: [http://www.pouet.net/prodlist.php?order=thumbup](http://www.pouet.net/prodlist.php?order=thumbup)

</comment><comment><USER5> This website is incomprehensible

<comment><AUTHOR> Is that because art is incomprehensible? But really the UX is not that bad -- there are filters across the top to reduce your view, restricting the results by filtering by Languages, Toolkits, Platforms, APIs, and Project Types. Seems reasonable.

For example, filtering by Toolkits>threejs shows some neat dataviz projects using threejs[1].

[1] [https://devart.withgoogle.com/#/?q=threejs](https://devart.withgoogle.com/#/?q=threejs)

<comment><USER6> Art is entirely comprehensible.

The problem with projects like this is that they often look more like technology studies than art.

There's a sweet spot between vintage media techniques and this modern(ist) everything-is-colour+code+concept digital style. But hardly anyone is exploring it.</comment></comment></comment>


An Idaho farm is giving away two million potatoes as coronavirus has hurt demand - <AUTHOR> https://www.cnn.com/2020/04/16/us/potato-dump-coronavirus-trnd/index.html <comment><USER2> Chickens one day feathers the next!

I think it's great that they were able to share the potatoes before they went to waste.

I have a nagging suspicion that not enough people are taking the threat of the looming food shortage seriously.

The borders have all but shutdown, preventing migrant workers from working on the farms. Farmers in turn have stopped putting crops in. Meanwhile the meat processing plants are being shutdwn due to the virus, resulting in a glut of livestock and below market prices for it, which might seem good for the consumer but what it realy means is the farmers wont be raising as many animals for the fall and next spring. On and on the food supply chain is spiraling down into recession.

If you think toilet paper was hard to buy and made people crazy, just wait till this fall when the meat is all gone.

Unfortunately I don't have the solution, worse yet I can see how it is all going to play out and theres nothing I can do about it.

Still, it is nice that the farmer shared the potatoes before they went to waste, too bad they couldn't have planted them all, we are going to need that food come winter.

<comment><USER3>
      The borders have all but shutdown, preventing migrant workers from working on the farms

H-2A workers in the country are being extended. There are over 250K legal H-2A Visa holders alone.

<comment><USER2> Thats great, I honestly hope everything works out! I am currently living in Canada and things are not going so well up here.

I have read several stories about American farmers suffering and losing crops due to the pandemic and labor shortages, though truth be told I read those articles on the internet and it is possible that if I looked for good news stories I would find those too!! Sometimes I get sucked in by my own echo chamber!

Not to mention the fact that farmers in general have an incredible ability to find something to complain about no matter what the situation. Eg. Too cold, too hot, just right?!? Just right is even worse as that just means low prices...on and on it goes.

That being said, I believe this article covers most of what I see going on, and to some degree the point that my original comment was trying to make but feel it is a bit more fair and balanced rather than a "The sky is falling" attitude like my above comment had.

[https://www.marketscreener.com/news/Arizona-Farm-Bureau- COVI...](https://www.marketscreener.com/news/Arizona-Farm-Bureau- COVID-19-Pandemic-Causing-a-Downward-Spiral-in-Arizona-s-Crop-and-Livestock-Pr --30381685/)

</comment></comment></comment><comment><USER4> We need robots now more than ever. We did not automate food farms when we could...it's still not too late.

Small acreage farms are easier to automate and we should automate them ASAP!

If anyone wants to chat/brainstorm, please ping me.

<comment><USER5> The issue is one of lack of demand, not supply. Automating farms (and increasing supply) would make the problem worse. If anything needs to be automated or improved, it's distribution. Much of the food supply that normally goes to restaurants and cafeterias has no place to go.

<comment><USER2> I have been hearing this new argument a lot lately and on both sides of the coin. "It's not a supply problem it's either a "not enough" or "too much" demand problem.

The first time I heard it was regarding the lack of toilet paper in stores, now it's going to bankrupt farmers.

I think it's actually a problem with the just in time delivery system currently being used. What 50 years ago would have been considered due diligence in having a couple months of food and consumables is now considered hoarding.

Maybe the current delivery/storage system is causing these fluctuations in demand to affect the supply so drastically?

Maybe it's small condos without closet pantry or freezer space in our over populated, "housing crisised" cities causing it?

It's been a long time since I took a Consumer-ed / Home economics class and I don't even know if they teach it anymore (maybe it was replaced by coding classes?) but when I was in school "Supply and Demand" were tied together and you couldn't do any calculation with one and not the other let alone blame a problem on one.

<comment><USER4> Consumer Ed home economics is not how you learn about supply chain works from farm gate to retail.

<comment><USER2> OK how do you learn about it? Going to get some asswipe and find out theres none there? Only to hear some asswipe tell you its not a supply problem its a demand problem, your right I guess...oh wait you didn't really say anything usefull just that im wrong..good job, can you print that comment out, mail it to me before my next bowel movement? So much for the three seashells!!</comment></comment></comment></comment></comment>