True cost of recruiting a developer [infographic] - <AUTHOR> https://devskiller.com/true-cost-of-recruiting-a-developer-infographic/ <comment><USER2> Scroll hijacking is absolutely deplorable. Who in their right mind thinks this is a good idea? And I don't mean that sarcastically, but who... in their sane and healthy mind, thinks its a good idea to blindly overwrite a user's personal scroll preference and neuter it, muck it up, and completely change it to something thats not as performant, clunky, buggy, and doesn't match the speed their used to.

I gave up reading the article because I shot past the paragraph a bunch of times.

<comment><USER3> it's absolute garbage on Firefox Dev Edition. Chrome seems fine. But I agree, not worth the trouble at all.

<comment><USER4> Chrome on Linux. One scroll blip on my mouse wheel and I'm half way down the page. I no longer care about what it costs to hire a pineapple or whatever the article was.

</comment></comment></comment><comment><USER5> Hummmm... you wonder how much of that money is invested in internal training for those skills they claim they cannot find. I bet the average is pretty close to 0. I guess it just makes more sense to throw money at the problem and hope for magic in 43 days.

Instead, why not just devote that $33K to a training program for a duration of roughly 43 days? Now you have the skills you were missing with the bonus of added loyalty and lower risk at no additional cost (money and time that would have been spent anyways). You also get a massive productivity boost for free according to Brook's Law. The only cost is that an external candidate might (or might not) have a diversity of skills your company doesn't provide.

<comment><USER6> Training is also a good idea since bringing a new person to a team has a negative effect on the productivity of the team (#):

(1) If you are not working on a greenfield project, it takes some time for the new hire to get up to speed. During that time, their productivity is negative: They are not really productive yet, _and_ they need help from everyone else on the team.

(2) If you add people to a mature team (or remove people), the team dynamics change _completely_ and the team might need several months to get back to their previous performance again (##).

So, hiring a new developer can cost you several tens of thousands of dollars / euros even after you already hired them. Training your existing developers can make sense here - They get a productivity boost sooner. And, when I teach inhouse-trainings, I always have a feeling that people are more motivated to do their job after the training, even when they cannot immediately use what they have learned: It matters to them that their employer cares about them and their technical excellence.

Still it often makes sense: Some times, you just don't have enough people for your long term plans. But don't expect too much too early.

(#) Adding people to a late software project makes it later / You cannot get a baby in one month by hiring a team of nine women.

(##) I collected some data about this when I was an agile coach for two teams at a large company. We added 2 developers, productivity dropped, needed ~6 months to become reliably higher than before adding the developers. Unfortunately, I cannot share the data. Also, I guess this was an extreme case: Complicated legacy system.

<comment><USER7> Sounds like we've found the guy who has the secret to measuring productivity. Care to share what the rest of the industry has yet to figure out? How, on earth, do we measure developer productivity?

<comment><USER6> I know that this every productivity measurement is _very_ fuzzy and can be cheated (#), but here's how we did it:

We were simply looking at the number of features delivered to the customer in a certain amount of time, number of defects found in production and number of critical defects found immediately after roll-out (a.k.a. hot-fixes). We adjusted for holidays, vacations and sick leaves.

Those numbers were relatively stable until we changed the team, then dropped, and it took quite a while to reliably get to higher levels than before.

(#) I don't think the team cheated, because if they had, they could have _easily_ cheated the numbers in a way that they'd steadily rise.

<comment><USER8> > Those numbers were relatively stable until we changed the team, then > dropped, and it took quite a while to reliably get to higher levels than > before.

That could be a reflection on a number of things, most notably the code quality. If your new hires are taking a while to get up to speed (you didn't specify how long) then that's also an indication of either quality or doing something quite different.

</comment></comment></comment></comment></comment><comment><USER9> Why oh why does the page need a custom hijacked scroll speed and a custom scrollbar? Completely awful to use, closed the page as soon as I noticed the wonky scroll behavior.

<comment><USER10> PM: Site looks good guys, but can you just tweak the scrolling behaviour? It doesn't match my preference.

Devs: That would be a setting on your device, we can't control that without some terrible hacks.

PM: I don't understand any of that, just make it work how I said.

<comment><USER11> > _Devs: [While updating resume] That would be a setting on your device, we > can 't control that without some terrible hacks._

FTFY

</comment></comment></comment><comment><USER12> "In the IT world, where there is a talent shortage, ..."

Could we please stop perpetuating this myth? If there really was a shortage, companies would fall over each other trying to hire anyone they could, not make it almost impossible to get hired by imposing ridiculous and long interview processes.

<comment><USER13> _...companies would fall over each other trying to hire anyone they could, not make it almost impossible to get hired by imposing ridiculous and long interview processes._

This doesn't follow. Gold is a scarce resource. This doesn't mean that gold purchasers should stop using assays to determine if they are buying gold or pyrite.

<comment><USER14> What if those assays didnt work though?

</comment></comment></comment><comment><USER15> The scroll hijack on this page is super annoying. Here's the direct link to the infographic for those interested - [https://devskiller.com/wp- content/uploads/2016/12/Devskiller...](https://devskiller.com/wp- content/uploads/2016/12/Devskiller-True-cost-of-recruiting-a-developer- infographic.png)

</comment><comment><USER16> On a related notes, devs now you know how much it costs to replace you. Next time you ask for a raise, remember the alternative is for the company to spend $30,000 replacing you.

</comment><comment><USER17> Hiring and retention are two sides of the same coin.

It's really an incomplete picture when you don't look at the cost of churn at the same time.

</comment><comment><USER18> As someone who manages an ATS for a global company that keyword myth drives me crazy. The ATS adds a ton of value to the recruiting process and in my experience most good recruiters don't use a keyword scoring system or at least trust one.

<comment><USER14> 95% of recruiters are not "good" recruiters from my experience.

</comment></comment><comment><USER19> For smaller shops, there are some easy ways to bring the cost down.

1) Make sure you are networking and social, budget time for this. It's good for team moral to get people out of the office anyway. Sponsor some talks / Meetup groups, host some public lunch and learns, get booths at career fairs... just get your folks out to meet people. Is there a cost? Yes, but as being proactively social becomes part of company culture you get a ton of benefits... more applicants, more partnership opportunities, better informed and educated staff, more confident staff if you give them more opportunities for showing their knowledge / public speaking / leadership...

2) Get better screening questions. I've hired a ton of developers for clients, I have 4-5 questions on my screen. I use a web form (you can even use a Google Form) that takes maybe 5 minutes for the person to write a few paragraphs for the responses. A fast no is good at this stage -- it's more about getting to a reason to ding the candidate at this point than a reason to hire them. Don't waste the candidates time asking them to re-type their resume, those systems are really stupid and turn off qualified candidates.

3) Get better at phone screens. I jump right in, I don't normally budget more than 5-10 minutes for a phone screen. Either they've got the skills, have confidence, and communication ability -- or they don't. If an employee sent them in as a referral, they always get to skip the phone screen and I just do a scheduling call to set up a time for them to come in. Always a good idea to respect your employee referrals. (Make sure you are paying a generous bonus for referrals.)

4) Given it takes ~20k to hire another dev, when you get the right candidate don't fret on salary. If they said they were looking for $125k, offer them $127k... easy easy way to come off strong out the gate with them. Understand that if you have a shitty health plan, people with kids and families aren't going to want to work for you -- the cost of skimping on your dental plan in terms what it does to employee turnover is staggering. "Stitch in time to save nine" type stuff right there. Understand that if you don't have 401k matching... you aren't a real company and your offers won't be competitive just because you have sodas and a foosball table in the break room. Get all your shit in order to reduce on-boarding speed-bumps, your employees can work other places and showing you care about them is a great way to retain them.

5) Spend money educating your staff. Do you need to hire for the position, or can someone you have cover it with a bit more training? Make sure employees have a training budget, make sure they are discouraged from not using it, make sure they are getting value from the training they take -- having them do summary lunch and learns for the company is a great way to spread the knowledge. And you never know who's going to be interested and what that will lead to... had an accountant show up for a talk on SEO... a year later she was running the analytics department at the agency. People can pivot, and you can benefit from that if your structure allows for personal growth.

<comment><USER20> Also, spend money retaining staff. What use is hiring someone at $127k if it causes three equally senior employees, currently earning $90k, to quit in anger?

I'm currently experiencing a softer version of this pattern as top management treats the very small team of a promising product as the future of the company, and the people and customers providing 98% of revenue as legacy.

</comment></comment><comment><USER3> The cost of making the wrong hire is usually way higher.

</comment><comment><USER14> I bet if you took that lost money and put it into higher salary that 43 days would go away and you'd get higher quality candidates.

<comment><USER11> You're probably right to a degree but people will still leave and you'll still have to replace. Saying that you won't have restaffing costs if you paid everyone $35k/yr more just isn't true.</comment></comment>


Tell HN: $13K Sales for "The Good Parts of AWS" on Launch Day - <AUTHOR> Hi HN
I'm an ex-AWS employee, now working for myself. Together with a friend of mine (who also recently left Amazon) we tried an experiment and put almost everything we know about AWS in one short digital book. We launched the book yesterday (xmas day) and it sold over $13K already: https://twitter.com/dvassallo/status/1210352939539161088
This is the first time I got paid for something I wrote, so I'm still very new to this. But I'm happy to share what I learned so far, so please feel free to ask me anything.
And here's a discount link for the book if you'd like to check it out: https://gum.co/aws-good-parts/hn <comment><USER2> At a conceptual level, I support this, but there should be no need for a cottage industry to explain how to use AWS. The UI is a nightmare. I have to open my browser's element inspector to see full docker image names in ECR. That's atrocious for a product that brings in billions. Clearly the UI's deficiencies "don't matter" to AWS' success, but they could try a smidge harder to make user's lives easier. But they likely won't, since it's business, and many of us using AWS aren't doing so by individual choice. But next time, when I am the decision maker, ...remember that, Amazon. People (individual contributors) do occasionally ascend upwards in technology organizations, and they _will_ know what it's like to use your technology, and it will absolutely influence decision making.

<comment><USER3> For any proper use the AWS console is nothing more than a brochure of what you could be doing.

If you want to use their services properly, read the documentation for the ones you have chosen and use proper tooling that provides repeatability (for the lack of a better word), provided by AWS themselves or by a third party.

<comment><USER4> The thing is, even "proper tooling" is a nightmare.

Tons of consistency issues in APIs, poor documentation, boto3 is atrocious where services names are passed as strings and why not use ' _args', '_ *kwargs' so you don't know how to use the method by looking at the signature.

I had to implement s3 presigned URLs generation as we had no access to SDKs, the documentation is littered across their website, you literally have to go through dozens of pages to compile enough information.

Their quota system is borderline frightening, there is so much individual limitations that you may really never know if some limit is not gonna blow up in production.

Not to mention their voluntarily incomprehensible pricing. You may brankrupt your company just doing a few API calls and anyway, I generally found the overall quality of their products so poor that their premium just kills it.

Every time I know I'll need to use one of their service, I prepare for the pain.

<comment><USER5> I generally support most things AWS does, but agree with you here. Though documentation you get a handle on fairly quick... Nearly all SDKs follow the same pattern. Still room for improvement. The lack of easy helpers (like for signing setup and validation) got us too.

Kinda to the other replies point though: does anyone do it better?

<comment><USER6> >does anyone do it better?

Not currently, sadly, imo.

</comment></comment></comment></comment></comment><comment><USER7> Is this a good book for dipping your toes into AWS?

I'm mostly a front end developer and have used Google's cloud services and others for my personal apps and experiments.

... but always found AWSs multitude of services and administration interfaces daunting.

<comment><AUTHOR> Yes, definitely. The first part is very high level. It's our opinionated perspective of the most important AWS products and how we think about them (which is not exactly how Amazon describes them). The second part is more technical and focused on developers who want to set up an AWS environment and understand what's going on.

And if what you find doesn't match what you're expecting, just reply to the email and you'll get a full refund – no questions asked.

<comment><USER7> Thanks!

</comment></comment></comment><comment><USER8> Best of luck with launch. I had pre-ordered the book and am exited to dive in.

For what it's worth, following you on twitter gave me a great window into your skillset and experience which prompted me to by the book.

</comment><comment><USER9> Congratulations! I've been working with AWS for over 5 years now and I still feel like I have to reach for a tutorial every time I go to use IAM

</comment><comment><USER10> What was the marketing? Was it because of the contacts you had through working at aws spreading the word?

I can imagine this selling a lot more as so many businesses are using aws and spending a lot of money on that too.

Maybe the next step is a top selling udemy or Udacity etc. course.

<comment><AUTHOR> Almost all on Twitter. (But got some sales from this too now :))

I've been active on Twitter for the last 10 months, since I left my job. I've been documenting what I'm doing and my professional story as it happens. Gradually built a following of 13K, and they helped me spread the word when I launched this.

</comment></comment><comment><USER11> _The Good Parts_

 _..._

 _CloudFormation_

Really? I mean, I get you want to recommend an infrastructure as code tool, but I really wouldn't consider it in the category of "[features] which you almost never need to consider alternatives."

<comment><USER5> I've used Ansible on AWS for 2 years to build out over 50,000 servers, to set up the vpc architecture, control IAM roles, nearly everything.

Ansible kept breaking. A minor patch on v2.5.x destroyed my VPC links, 2.6 broke my IAM, at one step I had to have an intern set log group expiration on 200 log group across several accounts because ansible doesn't support log group going from "undefined" expiration to any value.

I started with ansible because the the server modules are good... But I'm leaving them (for aws components) because there's just no quality control on the releases. I was tired of multiple sprints a year getting side tracked by a tool meant to help.

Now our DevOps team uses SAM templates, a superset/tool on CloudFormation. We've had 0 outages or sidetracks over the last year due to a SAM/CF bug, and we now have access to be features that came out in the last 18 months that ansible still doesn't support.

I don't suggest CloudFormation as a solution if you co-exist in multiple clouds, but I also reject the common belief among managers that teraform and ansible are the "god tools". Or team was almost forced onto teraform because a manager was convinced by a Hashicorp marketing guy that you could take a complex about setup from one cloud to another in 4-6 weeks using their product because the modules are cross-cloud. Right...

Anyway, Ansible is still our server control platform (though we are moving more serverless), but cloud formation is what we use to build the entire accounts supporting ecosystem

<comment><USER12> Ansible is awful to use with AWS. So many modules are "community" written with nowhere near the feature parity of Terraform [0] and are full of bugs [1].

[0] - [https://docs.ansible.com/ansible/2.3/s3_bucket_module.html](https://docs.ansible.com/ansible/2.3/s3_bucket_module.html)

[1] - [https://github.com/ansible/ansible/issues/47945](https://github.com/ansible/ansible/issues/47945)

</comment></comment></comment><comment><USER13> Great job! How long did you spend on writing the book?

<comment><AUTHOR> Started in October, spending about 1 day a week. Then we did a big push over the last 10 days.

<comment><USER13> Thanks for replying!

Another question is, what motivated you to start this effort in the first place? And why do you think it's useful. I haven't read the book, so not really sure

<comment><AUTHOR> Mostly an experiment. I wanted to get a concrete idea about whether it's possible to make a living producing digital products like these (and whether I could do it :)). I don't have that answer yet (too early), but now I have some evidence that something like this can sell.

</comment></comment></comment></comment><comment><USER14> Bought this on my phone and downloaded the PDF but didn't create an account - assumed it'd remember my email. How can I download it again on my laptop?

<comment><AUTHOR> The email receipt should have a download link. If you didn't get the receipt, email me and I'll resend it to you.

<comment><USER14> Fantastic!

Great resource. As someone who's used AWS before but always felt lost, this is great. The writing feels like I'm talking to a colleague sharing their experience, which makes it super approachable.

There was a repeating element of "x is a bit like y" (e.g. DynamoDB is like a super-durable data structure", which I found to be a really useful / easy way to think about each service.

<comment><AUTHOR> Thank you! I'm very glad to hear that, because that was the intention.

</comment></comment></comment></comment><comment><USER15> Good parts series, one of the best, congratulations man!

</comment><comment><USER16> I think you'll get more sales if you offer a sample chapter or two for trial.

<comment><AUTHOR> Will do. Thanks.

</comment></comment><comment><USER17> Good</comment>


Government Was Very Involved Helping RIAA/MPAA Negotiate Six Strikes - <AUTHOR> http://www.techdirt.com/articles/20111014/09164516365/worst-kept-secret-now-confirmed-government-was-very-involved-helping-riaampaa-negotiate-six-strikes.shtml

<comment><USER3> 1\. I'm disappointed that the Government is working so closely with special interests like the RIAA to set legislation.

2\. I'm glad that it is possible to FOIA it.

People do lots of things to cover up unpopular news. It seems that for whatever reason, the people in charge wanted to brush this under the rug. If the government does this and we don't like that, let's exercise our right and vote them out.

That there is no one who you'd actually want to vote in to public office to replace the scoundrels that screw the people over and over again is another issue.

<comment><USER4> > I'm disappointed that the Government is working so closely with special > interests like the RIAA to set legislation.

If you're disappointed about the above just wait until you read about the blank CD tax which you pay every time you buy a blank CD. A federally mandated tax that goes directly to a private corporation.

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

<comment> mkr-hn "This only applies to CDs which are labeled and sold for music use; they do not apply to blank computer CDs, even though they can be (and often are) used to record or "burn" music from the computer to CD. The royalty also applies to stand-alone CD recorders, but not to CD burners used with computers. Most recently, portable satellite radio recording devices contribute to this royalty fund. [13]."

I've never seen one labeled for use with music. I doubt that's by accident.

<comment> steve-howard I have, in stores like Target. It's confusing because the packaging tell you it's the "best" one for music, when I'm almost certain those CDs are identical to the ones next to them.

<comment><USER5> Some very, very old CD players won't accept "non-audio" CD-Rs.

> Physically, there is no difference between the discs save for the Disc > Application Flag that identifies their type: standalone audio recorders will > only accept "music" CD-Rs to enforce the RIAA arrangement, while computer > CD-R drives can use either type of media to burn either type of content. [0]

[0] <http://en.wikipedia.org/wiki/CD-R>

</comment></comment></comment></comment></comment><comment><USER6> The way to fix this is for the ISPs to charge the MPAA members to process any accusations. This was the result from the three strikes legislation in New Zealand, and since the law and $25 fee came into force a month or two back there have been _no_ recorded requests from the MPAA members to ISPs. It makes it obvious that even the MPAA knows that the claimed losses are a bunch of hogwash.

</comment><comment><USER7> Deeper link: [http://www.wired.com/threatlevel/2011/10/copyright-czar- cozi...](http://www.wired.com/threatlevel/2011/10/copyright-czar-cozies-up/)

<comment><USER8> Thanks very much for linking to the original story. The author, David Kravets, did a bang-up job on it. (I edited it). And while I'm glad Mike Masnik of Techdirt reblogged it, I wish the OP had followed the link to the originating story, which has primary documents.

</comment></comment><comment><USER9> For some odd reason this doesn't suprise me at all... The Freedom of Information Act is really a blessing in cases like these.

<comment><USER10> I'm actually surprised it even works. I would think most communication like this would happen by means that cannot be subpoenaed or FOIA'd.

<comment><USER11> Don't worry. I'm sure the remaining utility of FOIA will be more thoroughly emasculated soon. Give it a few years.

</comment></comment></comment><comment><USER12> In Sweden the RIAA/MPAA has been deeply involved in dictating copyright legislation and using the police as their private enforcement agency for years. Not even a secret.

</comment><comment><USER13> Considering the fact that the very reason that the RIAA exists is because of the government (collusion/anti-trust laws prevent labels from working together directly on things like pricing) and as a lobby organization, this doesn't seem that revelatory.

The whole point of trade associations (MPAA, RIAA, IFPI, ESA, CRIA, AJA, BSA, etc) is to avoid collusion while protecting the interest of associated members.

I had a lot of things I had to be aware of when working with other labels. All these tests, etc. SOX compliance also added another wrinkle.

In the case of those mentioned, usually these members are associated with intellectual property and representing copywrited works.

<comment><USER14> _The whole point of trade associations (MPAA, RIAA, IFPI, ESA, CRIA, AJA, BSA, etc) is to avoid collusion while protecting the interest of associated members._

They vary in just how much they _really_ have that aim, though. In some cases they really are organized as a way of protecting collective interests (e.g. the interests of the whole sector) without crossing over into collusion; with other organizations, it comes closer to attempting to collude without being caught. For example, is the purpose of the organization to expand the pie for music sales in general, or is the purpose to keep up profit margins by reducing competition among its members? The RIAA in particular has been caught doing that on numerous occasions. It's lost cases over pretty overt things like price-fixing, and I wouldn't be surprised if it does a lot of less overt things as well (various kinds of signaling and informal agreements to structure operations and campaigns in mutually beneficial ways).

Professional organizations that represent a sector, like the IEEE or ACM, seem to have a somewhat "cleaner" record on really promoting the sector rather than mainly aiming at reducing intra-sector competition.

<comment><USER13> Re RIAA: I agree. I'm no fan.

But what I said was that the point of trade organizations was to ensure collective rights while avoiding collusion. That is the POINT, that isn't what they always do.

Sometimes they just hide collusion under the guise of avoiding it: hence lobbying.

Also any time you have an organization speaking for many, there are never any "clean" records. IEEE, IETF, ACM all have had their controversies.

</comment></comment></comment><comment><USER15> This should be part of the #OccupyWallStreet movement, too.

</comment><comment><USER16> > _"In theory, the government should be representing the people, but the cozy > nature of the relationship suggests it was exactly the opposite. The > government was representing industry against the public interest."_

Aren't artists and content creators "the people", too? Just because the RIAA represents the "industry" to so many people doesn't mean that they're not, if even as a bi-product, fighting for the rights of artists.

<comment><USER17> The RIAA is fighting to maintain an outmoded business structure in which major record labels' presence as a middleman was convenient for artists seeking broader visibility and distribution.

It is no longer the case that an artist must sign away all of their rights and virtually all the resulting revenue from their work merely to get their music distributed, so what purpose does the RIAA serve?

<comment><USER16> > _merely to get their music distributed_

That is correct. Distribution is such a small part of what a _good_ record label does for you. Even if you want to believe that an artist _can_ do all of the things a label can do for them, that's not to say that they want to, or that they can do those things while successfully continuing to do what they do best - which is make music. Just because a handful of artists have achieved success without a label does not negate that the most successful artists today are still using them.

Take it from someone who works with hundreds of labels - the best ones still add tremendous value. The RIAA fights for the rights of labels, and by default, some of those rights are shared by artists.

<comment><USER16> I'll also point out that the people who have achieved the greatest results without a label, NIN, Radiohead, etc., were already famous, due in no small part to their prior labels.

</comment></comment></comment></comment><comment><USER18> Long-time lurker who just had to jump into the fray about this nonsense and non-story.

Reading tech-dirt I came across quite a few comments equating copyright with censorship. You folks need to take a deep breath and then ask yourself if your support for your 'civil right' to consume something trumps the right of the person who produced the work in question to decided for themselves how the work should enter and survive in the marketplace. Because all I hear these days is that your desire to consume without renumeration is all that matters. Any deviation from that tucks into some part of the copyright conspiracy boogeyman.

The most important right is that an individual should get to decide how their own works are treated - want to give it away for free? Want to set up your own torrent? Want to charge for it? It should be an individual's choice what they do with their work; you have no right to make that choice for them and it is a painfully shameful that capitalism's consumerist end has come to long polemics on why stealing something isn't - and now watching torrents of The Office is a civil right.

There is an important statue being dedicated tomorrow in Washington DC - <USER2> of you folks should turn off Pirate Bay and pay attention to things that are actually worth caring about.

By the way, I lost my single karma point to bring up the issue of individual control. The issue of piracy affects developers deeply - it's important to discuss it, not down-vote it.

<comment><USER19> That an individual gets to decide how their own works should be treated is not the most important right, it's not a right at all. It's a limitation on other people's rights to imitate or reproduce things that they hear, read, or understand, that has within many legal systems been granted to various degrees in order to encourage the creation of new things. Freedom of expression _is_ a civil right, and one which we may see fit to limit in order to encourage development.

Dismissing it as wanting "torrents of The Office [as] a civil right" is about as offensive to the people you're having the discussion with as dismissing the Catholic church as 'using a so-called mandate from God to get away with getting drunk' during Prohibition. People are having a real discussion about the limits of government, and you're dismissing it with hand-waving assertions of non-existent rights, and accusations of shallowness and greed towards anyone who would dare to find anything there to discuss.

The dedication of statues may be important to you, but it's as important to me as the record of the Windward Islands cricket team last year.

<comment><USER18> By way of a more pointed reply to your specifics:

you express that an individual getting to decide how their work is treated is not a 'right' at all. You see it actually as a limitation on other people's right to use that work.

So, do you support a minimum wage?

An average worker has only their 'labor' to contribute; that is their basic, creative work. It is also fundamental to all sectors of the economy.

So, should laborers have a right to a basic level of recompense for their work?

Is their demand/desire for recompense such a limitation on those who benefit from their work that that desire for recompense is illegitimate?

<comment><USER19> Do I support a minimum wage? Yes. Do I think a minimum wage is a right? Only in the jurisdictions that recognize it as one.

<comment><USER18> Thank you for answering the question.

I too support a minimum wage. I believe successful societies work and thrive because they create more of those 'win-win' scenarios that I have referenced a few times here.

So would you support a period of time in which an artist can monetize their creation?

</comment></comment></comment></comment></comment><comment><USER20> Why is it surprising that the government would be involved in enforcing its own law?

<comment> muuh-gnu Surprising it isn't any more, but it is still striking how recklessly one- sided and opinionated the goverment can be regarding one particular business. We dont officially know whether this relatively small business is _really_ that überimportant for the country, or did the business owners simply find a way to puppeteer the goverment to claim that it is überimportant. The circumstances strongly resemble the story of french 17th century button makers and their fight against innovation:

"Two of the most extreme examples of the suppression of innovation in France occurred shortly after the death of Colbert during the lengthy reign of Louis XIV. Button-making in France had been controlled by various guilds, depending on the material used, the most important part belonging to the cord and button makers' guild, who made cord buttons by hand. By the 1690s, tailors and dealers launched the innovation of weaving buttons from the material used in the garment. The outrage of the inefficient hand-button-makers brought the state leaping to their defense.

In the late 1690s, fines were imposed on the production, sale, and even the wearing of the new buttons, and the fines were continually increased. The local guild wardens even obtained the right to search people's houses and to arrest anyone in the street who wore the evil and illegal buttons. In a few years, however, the state and the hand-button-makers had to give up the fight, since everyone in France was using the new buttons." [1]

and

"The question has come up whether a guild master of the weaving industry should be allowed to try an innovation in his product. The verdict: 'If a cloth weaver intends to process a piece according to his own invention, he must not set it on the loom, but should obtain permission from the judges of the town to employ the number and length of threads that he desires, after the question has been considered by four of the oldest merchants and four of the oldest weavers of the guild.' One can imagine how many suggestions for change were tolerated.

Shortly after the matter of cloth weaving has been disposed of, the button makers guild raises a cry of outrage; the tailors are beginning to make buttons out of cloth, an unheard-of thing. The government, indignant that an innovation should threaten a settled industry, imposes a fine on the cloth- button makers. But the wardens of the button guild are not yet satisfied. They demand the right to search people's homes and wardrobes and fine and even arrest them on the streets if they are seen wearing these subversive goods." [2]

Sources:

[1] <http://mises.org/daily/4315>

[2] <http://www.techdirt.com/articles/20070110/004225.shtml>

<comment><USER20> Thanks, crazy person.

</comment></comment></comment><comment><USER21> USA folks - your move.

<comment><USER22> We're working on it

       ---occupywallst.org

<comment><USER23> Sitting in tents and blocking traffic doesn't help here.

<comment><USER24> You're right. Fundamentally, the question that must be answered is "what are you going to do about it?" They've got their answer: they've hired lobbyists to push for legislation, they've gotten a copyright czar who is working to broker voluntary agreements, and they're using the US Trade Reps to push for legislation abroad. I'm sure there are other things, too, that I forgot to list.

Thus far, there have been few counters to any of that. There's the EFF and folks who also lobby, support political allies and expose what's going on, but not much else except unfocused and therefore ineffective protest, though the Pirate Party has had some notable success abroad in terms of getting votes.

Admittedly, playing defense is much harder, but there are other possible avenues that haven't been tried. For example, forming a coalition of ISPs who do NOT subscribe to this agreement, pushing for copyright reform legislation, etc.</comment></comment></comment></comment>


The World's Most Mind-Bending Language Has the Best Development Environment - <AUTHOR> http://www.planeterlang.org/en/planet/article/The_Worlds_Most_Mind-Bending_Language_Has_the_Best_Development_Environment/14.html <comment><USER2> > I highly recommend that all programmers learn J.

Really? How well? I played with J over a weekend and familiarised myself with the gist of its philosophy, some time ago; enough to know how much time it might take to learn J well. But I stopped quite quickly when I realised how much time it would take to master. It's not impossible and the learning curve isn't too steep, you can piece knowledge together quite nicely (I think) but that curve is very long. I'm glad J exists but I'd really like someone to explain to me why, and in a lot of detail, I should learn it if they are going to make that suggestion.

</comment><comment><USER3> It's worth the read, if only for the reminder that _languages are programming tools_. It's not enough just to have the right functions, a clear syntax. I love me some snap-on wrenches --- they are the best in the world --- but I need other tools, too! I'd never touch lisp if I didn't have SLIME, or python without the standard library.

</comment><comment><USER4>
                     ">>  <<  Ndx Usr Pri JfC LJ Phr Dic Rel Voc !:  wd Help "

... suggests this is not something I want to spend a lot of time on. Is anything _supposed_ to be this arcane and unintuitive?

</comment><comment><USER5> Comments say "J is just APL done in ASCII".

Which is odd really, since many other new languages e.g. java, and c#. have source in Unicode. Yes, your class or method names can contain/be funky Unicode characters.

<comment><USER6> hi,

the comment is not meant in /that/ way; rather APL used special symbols for representing functions/operations, i.e., it had its own non-ASCII character set (google for details)

AFAIR, there was also a java programming puzzler with unicode in comments: since the unicode support is (was? probably there have been some changes since 1.4 _footnote:1_ ) _beautifully_ added on top of the parser you can get seemingly strange errors from the parser/compiler. (please google for details, too)

 _1_ : please correct me if that is not true anymore, has been quite a while since i read the puzzlers...

</comment></comment><comment><USER7> I tried J a few weeks ago and was really delighted. Since then, I have spent a few hours learning the many verbs (the way they call built in functions). It is really a great experience.

</comment><comment><USER8> ah i thought this article was going to be about brainfuck (esoteric as esoteric gets..).

hello world:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.</comment><comment>.</comment><comment>--.>+.>.

<comment><USER9>
        scheme@(guile-user)> ,L brainfuck
        Guile Brainfuck interpreter 1.0 on Guile 1.9.2
        Copyright (C) 2001-2008 Free Software Foundation, Inc.

        Enter `,help' for help.
        brainfuck@(guile-user)> ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.</comment></comment><comment>.</comment><comment>--.>+.>.]
        Hello World!
        brainfuck@(guile-user)>

</comment><comment><USER10> Well, I was interested enough to download and run the OSX version. Fails with some library issue, even tried off the disk image which the help says can be done.

I'm sure it's great but not exactly a good first impression for this mac user!

</comment><comment><USER11> Somebody hasn't tried Brainfuck or Malbolge.</comment>


Studying the Rich - <AUTHOR> http://www.bostonreview.net/books-ideas/mike-konczal-thomas-piketty-capital-studying-rich

<comment><USER2> A really good article, and it has succeeded in inspiring me to read the book.</comment>


New software watches for license plates, turning you into Little Brother - <AUTHOR> http://arstechnica.com/business/2015/12/new-open-source-license-plate-reader-software-lets-you-make-your-own-hot-list/ <comment><USER2> [https://news.ycombinator.com/item?id=10684343](https://news.ycombinator.com/item?id=10684343)</comment>


Clever Tool Uses Apple's Videogame Logic Engine to Protect Macs - <AUTHOR> https://www.wired.com/story/gameplan-macos-security-tool-video-game-logic-engine <comment><USER2> Sorry, but what is Apple's videogame logic engine?

When I search the net for "apple videogame logic engine", all I get is multiple instances of more or less the same article.

<comment><USER3> I think they are talking about this: [https://developer.apple.com/documentation/gameplaykit](https://developer.apple.com/documentation/gameplaykit)</comment></comment>


Python Generators in Depth - <AUTHOR> http://excess.org/article/2013/02/itergen2/ <comment><USER2> Another very nice and mind-bending presentation on coroutines, that eventually takes things so far that he creates a mini "OS" with coroutines as tasks, complete with system calls and a scheduler: <http://dabeaz.com/coroutines/>

<comment><USER3> The talk by the same David Beazley on Co-routines: [http://blip.tv/pycon-us- videos-2009-2010-2011/a-curious-cour...](http://blip.tv/pycon-us- videos-2009-2010-2011/a-curious-course-on-coroutines-and-concurrency- part-001-2006228)

The talk from David Mertz on Co-routines: <https://www.youtube.com/watch?v=b7R3-_ViNxk>

<comment><USER4> Wow that David Beazley presentation is annoying. He spends the first 10 minutes in the introduction, complaining about how he won't have enough time to go through his presentation.

<comment><USER5> I didn't watch the video, but going through the slides I was absolutely fascinated. I've been craving something new and advanced like this out of python for a while.

</comment></comment></comment></comment><comment><USER6> Thank you, great write up! I'd rather see more posts like this on the front page than reviews of the latest tablets.

</comment><comment><USER7> Somewhat off-topic, but how are generators different than returning an object with a closed over environment? For instance, his first example in CoffeeScript would be:

        runningAvg = ->
                count = 0
                total = 0

                send: (value) ->
                        total += value
                        count += 1
                        total/count

        r = runningAvg()
        console.log r.send 10
        console.log r.send 5
        console.log r.send 0
        console.log r.send 0

<comment><USER8> In that case? Not very much different at all, but that's missing the point. Think of it this way (I apologize, this is going to get obtuse):

Imagine you're a barista. You clock in and start doing barista things. You have three responsibilities. You have to take orders from customers and you have to pour coffee. When there are not customers you have to clean the shop.

The rules:

\- You must take at least two orders if there is a line, but no more before you start pouring coffee. You should never have more than two outstanding orders at a time.

\- If you have no customers in line and no coffee to pour, you must clean the shop.

Lets do it with generators (again pseudo code):

      function day_of_work() {
        generator take_orders() {
            orders = array()

            while(during_shift()) {
               while(customers_in_line()) {
                 if(length(orders) >= 2) {
                    yield orders
                 } else {
                   orders.push(take_customer_order())
                 }
               }

               yield orders
            }

        generator clean_shop() {
            unpack_coffee()
            yield

            clean_espresso_machine()
            yield

            take_out_trash()
            yield
        }

        while(orders = take_orders.next()) {
            if(length(orders) > 0) {
              pour_coffee(orders.pop())
            } else {
              clean_shop.next()
            }
        }

There are lots of cool things going on here.

First notice that these generators not only have variable state, but they also have _control flow_ state and THAT is why they're different. Notice that take_orders will yield control if more than two orders exist in the queue. It will also yield control if no more customers are in line. So our main program loop is really simple. It gets the current set of orders from "take_orders". Once the order queue is full it starts pouring coffee.

Notice what happens when no orders are present. Clean shop is executed once per iteration. It first unpacks the coffee, and then yields control. Now we go back and check for more orders, if we find them we fill them until we don't have any more again. Then it's back to cleaning shop, but we pick back up RIGHT WHERE WE LEFT OFF! So we just start cleaning the espresso machine... this goes on and on until the work day ends at which point take_orders cleanly exists and orders is null. Then we pack up and go home.

Now you might go: Well I can implement that in Javascript! You'd be right! Closures + callbacks make it totally possible. Lets take a stab at it:

      orders = [];
      current_task = -1;

      while(during_work_day()) {
           take_orders(
                orders,
                function(order) { pour_coffee(order); },
                function() { current_task++; clean_shop(current_task); }
           );
      }

      function take_orders(orders, orders_full_callback, no_orders_callback) {
          if(customers_in_line()) {
              if(orders.length > 2) {
                  orders_full_callback(orders.pop());
              } else {
                  orders.push(take_customer_order());
              }
          } else {
              no_orders_callback();
          }
      }

      function clean_shop(current_task) {
          switch(current_task) {
            case 0:
                unpack_coffee()
                break
            case 1:
                clean_espresso_machine()
                break
            case 2:
                take_out_trash()
                break
            default:
                do_nothing()
          }
      }

So that will work. Every iteration we look for customers, if the queue is full we callback to start pouring coffee. We clean the shop if nothing is going on.

Notice that our callbacks are closures. However, the callbacks do not have _execution state_. This means we have to manage state externally in the form of _current_task_.

Now for a trivial example like this, that might not be a big deal. However, imagine that we had a whole list of things to do when there weren't customers. Lets make it even harder, and have those tasks depend on state.

For instance what if we actually had a bunch of separate tasks we had to do:

\- unload the truck

\- draw something cool on the chalkboard

\- clean the shop

What if the order those should be done in depended on state?

Before 1:00 PM the priority is:

#1 draw something cool

#2 unload the truck

#3 clean the shop

After 1:00PM the priority changes:

#1 unload the truck

#2 draw something cool

#3 clean the shop

After 3:00PM the priority changes again!

#1 clean the shop

#2 unload the truck

#3 draw something cool

Now think about how hard this is going to be in Javascript. You're going to have to maintain state for three separate jobs (where am I in that job), but also deal with making sure you're working on them in the right order.

What makes generators so damn handy is that the state is internalized. I only need to change the order I invoke the generators. As long as I keep calling next() until there aren't any items left...they'll just keep churning through whatever they're doing in the first place. They become more expressive as the complexity of the state they are managing increases. Things that are hard to do in languages that don't support them, are often pretty easy with generators. Do some work, yield, do some more work, yield... becomes a very simple pattern to reason about while not having to manage all of the state you have to do in other languages.

I hope that helps clear it up a bit:)

<comment><USER9> Great example. Thank you.

</comment></comment></comment><comment><USER10> Unrelated, but I find that the technique used to blur the logo is really cool! He uses two images, one normal and the other blurred. Both images are using fixed positioning. The normal image is set as the `body` background, and the other is set as the background of the content panels (`div.bgover`). So, when you scroll over the panels, the blurred logo is layered over the normal logo, giving it that cool blurred transparency effect.

<comment><AUTHOR> I stole that from here <http://meyerweb.com/eric/css/edge/complexspiral/glassy.html>

<comment><USER10> Very cool, thanks.

</comment></comment></comment><comment><USER11> These are great. If only one could write async network code with these that wasn't vastly more complicated than the equivalent gevent code.

<comment><USER12> Tulip coroutines[0] look rather good. As with C#'s async/await you have to propagate the "asyncness" to the event loop (using `yield from` with a future or another coroutine), which is not necessary in gevent, but that should be the extent of it.

[0] [http://www.python.org/dev/peps/pep-3156/#coroutines-and- the-...](http://www.python.org/dev/peps/pep-3156/#coroutines-and-the- scheduler)

<comment><USER11> The implementation described in that PEP is massive. Seems pretty hard to explain...

</comment></comment></comment><comment><USER13> That link to Generator Tricks for System Programmers ( <http://www.dabeaz.com/generators/index.html> ) has been enlightening. For the first time I've totally and fully groked why generators are good at a _practical_ rather than just theoretical level.

</comment><comment><USER14> If they could only be pickled...

<comment><AUTHOR> That's a feature!

Seriously though, not being able to define a serialization method can be a limitation. However, it is always possible to turn a generator into an iterator class with whatever methods you like, but the code may end up looking totally different.

<comment><USER14> To me it only looks like a limitation.

So yeah, you can write a custom class. But you will need to add a custom "save state" and "load state" in your class' __iter__ method. So all the benefits go away.</comment></comment></comment>


Ask HN: Best marketing/branding books? - <AUTHOR>

Hi -- my partner and I have a recently funded startup and one of the "money guys" is very bottom line focused, challenging nearly every expense.  We are trying to build the case that its worth it in the long run to have nice marketing materials, to have good design that taps into the 'cool' zetigeist and develop something that people will want to be a part of.  Does anyone know of some good books on the subject that we can read and then use to bolster our case in the board room? thx <comment><USER2> Your "money guy" is right for being very bottom line focused.

Respect his money: Don't (DON'T!) even think to invest A DIME into logo or any other 'cool' marketing materials that you see big (and not so big) companies have. Invest EVERY minute and some money to FIND OUT what your customers WANT, sell it, if they want to buy it, build it, THEN invest money into marketing that WORKS.</comment>


Ask HN: Found security flaw in site, what should I do? - <AUTHOR>

I found an obvious security flaw in the site of a regional business that serves 10's of thousands of customers a month - think a hotel room or airline ticket.  Just change the sequential transaction id in the URL and you can see all the details of any transaction (with the exception of credit card number) for the past year.  Even worse you can change any reservation before it is used.<p>What should I do?  Is there a standard protocol about notifying the company before going public?  Is there a group who I can report the flaw to who will notify the company?  I am not any kind of security researcher and don't want to get accused of hacking <comment><USER2> As _underwater_ said, the "responsible" approach is to notify companies and give them sufficient time to fix the problem. Sometimes this is challenging, due to difficulties in establishing contact with the right people or difficulties in convincing them that the issue is serious; in such cases it might be useful to work with someone who has experience in the field -- I'm happy to help if you want.

Generally speaking, as long as you didn't do any more than was necessary to confirm that the issue existed, you're not likely to be accused of wrongdoing; working with/via someone who is recognized in the field would diminish this possibility even further, since "hey, you guys are evil" tends to be defeated very quickly by "this guy has handled lots of issues like this and nobody has ever accused him of wanting anything more than to get the issues fixed".

Just be very careful to make sure that you don't ask for money in any way (including asking them to hire you as a consultant). The best of motives can be very quickly misconstrued when the word "blackmail" comes up.

</comment><comment><USER3> I think what is normal is to let the company know first. And also give them a test they can reproduce with the bug and also a deadline in which you are going to make public the security bug you have done. The deadline is because many companies ignore the problem until is public.

This opinion comes from reading this Chris Shifflet's article: <http://shiflett.org/blog/2007/mar/my-amazon-anniversary> "On this day last year, I informed Amazon about a pretty serious vulnerability and demonstrated it with a few examples and a detailed description. In the description, I explained how to exploit the infamous "1-Click" feature, causing victims to purchase items of my choosing without their knowledge or consent, and I stressed that the scope of the problem extended beyond my benign examples. After some mild prodding, I finally received a reply letting me know that my email had been received, the vulnerability had been verified, and Amazon considered fixing it a top priority.""

</comment><comment><USER4> Google "responsible disclosure". The normal process is to inform their security contact (or more likely tech support), give them a number of weeks to reply and sufficient time to fix the issue. After you've given them a chance to address the issue feel free to publish a report.

</comment><comment><USER5> I would phone them or make a disposable email and warn them, that way if they take the news bad they'll have a hard time hunting you down. I can't imagine why they would react badly to that in light of all the recent security issues in the media, but there's all kinds of jerks in this world.

</comment><comment><USER6> Why don't you send an e-mail to the webmaster of the site?

If you're concerned that the company may misunderstand your intent and take some legal action against you, may be you could send an anonymous e-mail...

<comment><USER7> ...and possibly include a commitment so that you can take credit for it after it's fixed? :)

</comment></comment><comment><USER8> True story that happened to me: while trying to look up information for a restaurant reservation, I found some security issue that would redirect user to an obscure host name. I think it was an issue of bad DNS setup with their web hosting provider. In any case, being the helpful and detail-oriented web guy, I sent their head quarter's team an email with the detail of what's wrong and a solution that should fix it. I got an email from them the next morning, and since I started my email with "While I was looking up information for a reservation..." the person arranged the reservation for me. So I thought that was that. But after the meal was done, the owner came out and thanked me personally and took care of all our drinks. And since it was a Brewery/restaurant, the beer tasted a bit sweeter :)

I've also sent another email to a small online belt buckle shop to notify them of the insecure way they were setting up Paypal on their site (again, the steps to reproduce the problem and steps to fix it). The owner emailed me back to thanked me as well as taking care of the order personally. You know, most people are just happy that you are giving them some help. Being in the hacking community, I would imagine that everyone is the same here--most of us are (overly) helpful individuals. It's in our genes. So don't fight it and do the nice thing of sending them the steps to reproduce the problem and ways you can fix it. If you feel that you should protect your anonymity, do it. But do notify them :)

If one of these days, when I make an obvious security problem, I would hope, that one of us here would shoot me an email so I can fix it immediately. And I will promise to do the same.

</comment><comment><USER9> "Hi there, I was retyping a link to my invoice and screwed up a digit. It took to someone else's page, which seems odd. For example, my link was <link> and I accidentally typed <other link>. Not sure if this is a problem or anything, so I just wanted to bring it to your attention. I'm not sure if this is the right place to email, so please let me know that you get this."

When you make strong statements, other people often have a tendency to react strongly and defensively. I assume that the person at the other end is both competent and concerned - give them all benefits of the doubt.

If you find that isn't the case, then, and only then, you can email them and use the word "security" and talk about going public after n weeks, etc.

(I am not a lawyer.)

</comment><comment><USER10> Simply inform them about the issue you have just seen. I wonder why would they want to think you other wise as you are just trying to help? But for the worst case, consider keeping all of your records. Just be true to yourself what you have seen and say them to solve it. If you know how to solve, possibly, you can ask them some money saying you can fix it.

</comment><comment><USER11> In the age of any website getting hacked, take your steps carefully. But then dont make a business of this discovery, but assist. go ahead inform them by phone call, keep logs of your conversation.

</comment><comment><USER12> Emailing the webmaster is a good way to begin. Try security@domain and hope someone checks the catchall inbox. Learn about best practices for responsible disclosure if you want to escalate.

</comment><comment><USER13> Just use whatever contact they have on the website.

Dear <company> website team,

I am a security consultant for <my new company I made 10 seconds ago>.

While casually visiting your site, I recently found a severe security bug that not only leaks private information, but has the potential to alter a user's reservations.

Please contact me as soon as possible so I can let your technical team know about the problem (no charge, of course).

Thanks,

Me Security Consultant, <new company> <phone #>

Might as well try to get some business out of it ;-)

</comment><comment><USER14> I found one of these and notified the IT manager of the company. It wasn't hard to get them on the phone. Then I got free stuff and many thanks in return, plus warm fuzzies.

</comment><comment><USER15> Hand it over to LulzSec

</comment><comment><USER16> Call lulzsec as fast as you possibly can! /sarcasm</comment>


PeerCDN: WebRTC-based peer-to-peer CDN [video] - <AUTHOR> http://peercdn.com

<comment><USER2> I like this as a 'tech demo' but i think they are some serious pitfalls if something like this was used.

1) Issues with privacy, leaking information to other peers about who's on the website etc doesn't sound good at all, neither for me as the site owner neither for my users since it could be potentially used as a method for them to be tracked.

2) In 2013, its easy and inexpensive to serve any kind of static files, videos are quite big and that might be the only valid case, however...

3) If you used this to stream video, it would require a great number of seeders for videos to buffer fast and start playing with no iterations.

4) How much of your user hard disk are you going to take over to store your things? Are you storing content that is outside the context of there current page?

I could go on and on, i see so many issues with such practices but here is the most important:

Your users will hate it, they will hate being used in such a manner, they will hate there upstream being used, they will hate there hard drives being used. They will hate you.

</comment><comment><USER3> This will open websites to a hole new array of exploits. I don't mean that as a bad thing. Just something that will need to be addressed. I'm thinking seeders sending corrupted/malicious packets to other peers.

<comment><USER4> It does mention that checks are in place to prevent tampering. "PeerCDN uses a centralized resource authentication server to generate SHA1 hashes of a site's resources. Data provided by peers will only be used if it is safe and unmodified. All peer-to-peer communication is encrypted."

<comment><USER5> It may prevent tampering, but it does nothing for surveilance. Say hello to passwords.

<comment><USER4> Surveillance, sure. Like a MITM could be a threat, but a MITM is a threat for any HTTP request.

And shouldn't forms still be posted directly back to the server? If it's just a CDN I don't see how any confidential data could be leaked unless the server serves up your credentials in cleartxt. Perhaps I misunderstood you?

</comment></comment></comment></comment><comment><USER6> Great for the websites. Not so great for mobile users or those with data caps (it's usually a _transfer_ cap so it doesn't matter if you're downloading or uploading). I wish unlimited data was more prevelant, alas, that's not the case.

"If peers are slow or the central PeerCDN server..." So there still is a central server involved, I'm guessing for coordination.

<comment><AUTHOR> Yep, we run a globally-distributed central tracker server to coordinate which peers have which files. We've considered making it completely distributed, but the added complexity and latency doesn't seem worth it at this stage.

Good point about the upload bandwidth. We currently do some nice things to hopefully alleviate the effects of this. If the user is on mobile, on a slow connection, or on a device that's on battery power (yes, you can detect this in JS!), we can behave nicely and use less or no upload bandwidth.

<comment><USER6> Don't forget there also users who are capped by their ISP that aren't on mobile too. It's a weird situation, but you may also need to blacklist certain ISPs or you'll have some users who are a bit peeved.

I don't think any privacy issues are at play since the assets are hashed, but it seems like almost every site I visit in the EU has those annoying "this site is using cookies" banner that I have to acknowledge. I can tell you that's a total browsing experience buzzkill, but do you think some jurisdictions will demand something similar? I don't mind sharing bandwith since I'm not data-capped.

</comment></comment></comment><comment><USER7> My that layout looks mighty familiar...

<http://cl.ly/image/212W3P2X2t1L>

This sounds awesome, though.

Edit: Totally missed the footer as pointed out in the replies. I got unlucky with a red cable under the red link on my screen.

<comment><USER8> If you look in the footer

> © 2013 PeerCDN, Inc. Site design inspired by Meteor.

</comment></comment><comment><USER9> Nice work! How do you plan on dealing with the leeching ratio though? It'll be far higher than traditional bittorrent (where the user leaves the app running in the background).

<comment><USER10> Leeching shouldn't be too much of a problem: the user will upload while they remain on the page (which should be much longer than it took them to download the assets).

</comment></comment><comment><USER11> This is really interesting as something that everyone agrees upon and is taken to mean what the web is about. Unfortunately, that's not it's current state. How big can the burden on the visitors be, and is it opt-out instead of opt- in? Sounds like brooding trouble.

Really glad to see cool things being done with WebRTC though.

</comment><comment> X-Cubed So PeerCDN works great with video, but for the screencast they chose to use YouTube instead. What happened to dogfooding?

<comment><USER12> Soon! These are early days yet, we hope to be powering the entire PeerCDN site with PeerCDN in a couple of weeks :)

</comment></comment><comment><USER5> This is a surveilance and policy nightmare. I predict within 0-3 months of launch this service will be banned on school campuses, corporate networks, mobile networks, and anywhere else that it ends up being used.

Also - browsers are not reliable. Unless people get paid to spin this up on real servers, this is going nowhere (like XDN).

<comment><USER13> The internet is a surveilance and policy nightmare.

It may be difficult to ban if it's running JavaScript in the browser and using simple http. I'm not an expert in WebRTC, but I wouldn't dismiss this out of hand.

</comment></comment><comment><USER14> My biggest concern is if a user closes their browser window while another peer is streaming some content. I'm assuming Peer CDN connects to someone else or uses Http's Range to fetch the rest of the file off the server?

<comment><USER12> Yes, that's exactly how the fallback will work. You can download content from 1 or more peers. If all the other peers disconnect, then it'll fallback to the origin HTTP server and fetch the remaining bits using RANGE requests. There are a whole bunch of reliability checks to ensure that files are downloaded correctly, completely and as fast as possible (re-downloading as few chunks as possible or not at all).

<comment><USER15> Will my server have to support RANGE requests for all accelerated assets?

<comment><AUTHOR> Yep, your server will need to support Range requests. If it doesn't, then assets will just load over HTTP normally.

</comment></comment></comment></comment><comment><USER16> How do we get into the beta? Market Loco could totally use this.

</comment><comment><USER17> "Offloading part of the web hosting burden to site visitors reduces bandwidth costs." How does this exactly works?

<comment><AUTHOR> It uses WebRTC to make peer-to-peer connections between a site's visitors.

</comment></comment><comment><USER18> Very interesting idea.</comment>


The Argument for jQuery - <AUTHOR>

So myself and my other frontend developer I work with have been sold on jQuery for a long time. We have been talking it up for months but typically, we have to sell this to "the people in charge". (See another of my submissions for my feelings about where I work.)
I am writing up the reasons we are building with jQuery and why we want to use it site-wide. So I'm posting my argument below, because I would like to get some other folks' opinions about this and turn this into a mini-document that other developers in our situation can use in your own companies.
(unfortunately HN comments eat tabs and spacing for breakfast.)
<comment>---
The javascript written to enabled dynamic interactions within our site is written with the jQuery javascript library. The intent is that jQuery will become the standard way we implement javascript across all of our site.
The benefits provided by jQuery
a. Ease of development.
i. Code written with jQuery is more compact, easier to read, and more maintainable than javascript written traditionally to do the same thing.
ii. It is possible to quickly achieve required results using jQuery that might take 10x as long to achieve with standard javascript code.
iii. Using jQuery does not prevent us from using regular javascript where necessary. jQuery is written in javascript simply makes it easier to do most things.
b. Automatic cross-browser functionality
i. jQuery is designed to get rid of cross-browser differences between javascript implementations.
ii. Adding/removing events and DOM manipulation are things that are easy with jQuery that require excess code and development time to have them function the same in all browsers traditionally.
c. Advanced UI features
i. jQuery comes with many built-in visual effects.
ii. See http://docs.jquery.com/Effects and http://docs.jquery.com/UI for examples.
d. Excellent overall performance speed
i. Thousands of users of jQuery have helped to contribute code and fix bugs in the library that have made it very fast compared to other libraries and traditionally written javascript. </comment><comment><USER2> Don't know what kind of management you are pitching this to, but when I have had to convince "semi-technical" manager types I have found pointing to other places that use the same tech helps. It at least gives them a feeling of cover - that their techies aren't using some wacky or risky techs.

IBM, Google, etc etc (<http://docs.jquery.com/Sites_Using_jQuery>)

Even traditionally conservative (and accessibility obsessed) government web sites are moving to jquery:

<http://www.whitehouse.gov/>

<http://www.epa.gov/region09/>

</comment><comment><USER3> If you just start using jquery would anyone know besides yourself and the other frontend developer?

At my current job I've found the old adage that its better to ask for forgiveness than permissions works wonders.

</comment><comment><USER4> Are they the sorts to be swayed by a "supported by Microsoft" argument?

[http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery- and...](http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and- microsoft.aspx)

</comment><comment><USER5> So, let me get this right, you're using no-framework, pure JavaScript at the moment?

<comment><AUTHOR> We have a core.js file that is approaching 4 years old. As we're relaunching the site channel by channel and on the frontend, we want to use jquery for everything

<comment><USER6> Taking what arockwell said, can you not just drop jquery.js into core.js? I.e. rename jquery.js.

<comment><AUTHOR> Not that simple unfortunately.

</comment></comment></comment></comment><comment><USER7> I have an easier argument. Come up with a half-interesting problem and ask them to solve it with and without jq. they will immediately love JQ. We snuck it in because we wanted the .load functionality. And I assure you everyone immediately fell in love. After that it was not long until cool animations started to appear. People started saying "hey whats that really cool thing you did with the UI in that app, how do we do something so cool too?"

The niceness of just DOM manipulation + some ajax simplifiers + animations = awesomeness!</comment>


Keeping sync fast with automated performance regression detection - <AUTHOR> https://dropbox.tech/infrastructure/keeping-sync-fast-with-automated-performance-regression-detectio <comment><AUTHOR> Hi everyone, one of the authors here! Happy to answer questions about the post, our framework, or how we handle sync perf in general</comment>


Can Good Doctors Be Bad for Your Health? - <AUTHOR> http://www.nytimes.com/2015/11/22/opinion/sunday/are-good-doctors-bad-for-your-health.html?ref=opinion <comment><USER2> When I was 19 I was diagnosed with something called hydronephrosis. It's effect on my kidney function wasn't significant but my parents took me to see one of the most famous urologists (I think the hospital was in philadelphia) anyway. I don' remember the specifics but the doctor immediately recommended invasive surgery. My father then took me to another urologist he knew from a friend's recommendation. This doctor said that there was no reason to have surgery yet. The kidney with the hydronephrosis had something like 4% below utilization rate that was normal and that we should wait. We decided to follow the second doctors advice and do regular checkups every year and the problem actually just went away.

The most amazing thing about this experience was when we called 3 weeks in advance to cancel the appointment for surgery the nurse got angry with us and said something along the lines of "You actually dare to waste the doctor's time?". It was very surreal.

TLDR: Don't get pressured into getting surgery, go get second opinions.

<comment><USER3> Had the same thing happen when I broke my hand. The first doctor wanted to fill it with metal. A second opinion with a more conservative doctor caused me to avoid that surgery, and it healed just fine.

I encountered the same egregious attitude when cancelling the appointment. It made me realize all the more that it was a attempted money grab, with no real concern for my wellbeing.

It was quite the learning experience. I will now never not get a second opinion.

<comment><USER4> This is why I hate going to the doctor in Manhattan.

The doctors are either: (a) decidedly mediocre / horrible because most good ones are going to be rational and leave to another part of the country where they aren't below middle class and subject to a malpractice lawsuit around every corner, or (b) have money on their minds at all times (like anyone in NYC really) and will always recommend the (profitable) procedure or (c) very good but cash only, serving the wealthy in boutique specialty or concierge practices

It's a major quality of life issue here. Note I'm referring to private practice, I don't have experience with hospitals.

<comment><USER3> I'm lucky to have found (d) a very good doctor with good morals who's on my insurance. This was years ago, and I've since moved away, but have developed some RSI issues in my other hand. I drive three cities over to still see him, because the peace of mind is worth it to me.

</comment></comment></comment></comment><comment><USER5> I've posted about this before - my wife is a highly specialized surgeon. This article really only scratches the surface of the issues with surgery around the US, as a software developer working in a pretty transparent and open industry I'm always horrified at how surgeons practice in the US. In my opinion the core of the problem is the lack of transparency in the _entire_ system. There are just very few pressures for surgeons to really improve like they should have to. If, as a surgeon at a academic center, you want to just cruise along, no problem, you can just publish a few papers each year, be nice to patients, and you will be considered a leader in your field - even if you have terrible outcomes. There is little to no data out there to help patients objectively evaluate a surgeon, and to force surgeons to become better.

Speaking of things that I found strange - my wife was blown away at her current practice because for every operation they 'pair-surgeon' full time. This seemed very normal to me, but outside of surgeon training this is considered bizarre - when she tells other surgeons they ask her if it is something to do with billing! (it is not, they can't bill for the second surgeon). She loves it of course, it forces her to up her game and gives her someone she can bounce her thoughts off of during the surgery. I've asked her if she could go visit another surgeon in another facility somewhere and work along side them for a few days to learn, but because of the red-tape and state licensing, this is extremely difficult. The cross seeding of surgical expertise becomes glacially slow after your initial training in residency, you pretty much hope you were trained well and stumble along with a bit of help here and there.

<comment><USER6> Full transparency could have negative unintended consequences. For example, if surgeons knew their success rate were public, they would be incentivized to take easier cases. Who would take a difficult case if they knew it would constitute a bad mark on their record almost for sure?

Fundamentally, the issue is that it's impossible to observe for any given patient if that patient's outcome would have been better with a different surgeon. This is the same challenge we face with evaluating drugs: many more people who take aspirin survive than those who take anti-cancer drugs, but this likely reflects the kind of person who is taking each (people with headaches vs. people who have been diagnosed with cancer). To solve the problem there's no way around randomized trials. So, one idea would be to randomly assign patients to surgeons.

(Transparency might still be better on net, but important to keep these issues in mind.)

<comment><USER7> > For example, if surgeons knew their success rate were public, they would be > incentivized to take easier cases. Who would take a difficult case if they > knew it would constitute a bad mark on their record almost for sure?

Why would it be a "bad mark" if everyone understood the case was difficult? Given a difficult case, wouldn't a surgeon be graded badly only if they did poorer on average than other surgeons tackling similar cases?

As long as a case's "difficulty" is measured in a consistent way, I don't see how surgeons would be incentivized to avoid difficult cases.

<comment><USER8> How do you measure difficulty? It's a surprisingly hard problem.

<comment><USER7> Good question. Perhaps that is one of the root issues here. As a layperson, I wouldn't know how to answer it, but I'm guessing the answer probably involves more rigorously detailing the various aspects of each case so that comparisons can be fairly made across surgeons treating similar cases--apples to apples and all that.

</comment></comment></comment></comment></comment><comment><USER9> I really wish people would quit treating doctors as unquestionable authorities on health. Rather, they should be treated as consultants - expertise for hire - who should be able to give good answers to most questions, but should expect to have to defend their recommendations, and can sometimes be wrong.

<comment><USER10> Doctors act like authorities and get upset with patients when they disagree with treatment.

<comment><USER11> Some doctors do that. Certainly not all do. Example: I went to see my GP recently, and as part of the conversation I brought up a drug he had me taking. I said I'd read up on it and noticed that it's considered highly addictive and not a very pleasant drug, and asked if there was any other option. He proceeded to rattle off a list of options and the implications of each, and said "what do you want to do?"

I said "let's try X for a few months and see how that works." He agreed that was a fine course of action.

Similar story: at a recent checkup, my cholesterol numbers had mysteriously shot up by a huge margin. He called and said I should double my dose of the statin blocker I'm on. Well, I don't even want to be ON a statin blocker, and I was doubtful about my cholesterol taking that big a jump for no reason. So I suggested it might be a bad test, or some kind of weird outlier, and suggested we wait a month and test it again. We did and my cholesterol was back to perfect. So no change in the statin dosage.

I can also ask him to order specific tests for things I'm interested in (c-reactive protein for example, or the NMR LipoScience lipid test) and he's fine with doing that.

Now maybe my doctor is really weird in this regard, but he really treats me as pretty much a peer when it comes to decisions concerning my health. Not "peer" in the sense that obviously I'm not a doctor, but as in it's my health, and he acknowledges that it's my health and my decisions, which I can make with his consultation.

</comment></comment></comment><comment><USER12> > _Despite often repeating the mantra "First, do no harm," doctors have > difficulty with doing less — even nothing. We find it hard to refrain from > trying another drug, blood test, imaging study or surgery._

It's disappointing that the conflict-of-interest is not better recognized. Asking a surgeon if you need surgery? Do you really expect a person under a pile of medical-school debt to give you an unbiased answer?

<comment><USER13> >Do you really expect a person under a pile of medical-school debt to give you an unbiased answer?

Yes. I expect lives to be put ahead of economic gain. Someone lacking the ethical backbone to do this should never even be admitted to medical school.

<comment><USER14> The gold standard for ethical behavior isn't to magically not let bias affect you when making decisions. It's to identify conflicts of interest and avoid them. Someone who knowingly allows a conflict of interest to exist is behaving unethically, no matter how hard they try to avoid letting their bias affect their decision.

</comment></comment></comment><comment><USER15> The article conflates "good" doctor with experienced doctor. There is no such evidence that experience leads to better outcomes in most divisions of medicine (1), and indeed many have found (just like this one) that less experienced doctors provide better care (2).

The most important variable in your doctor is their personality and your relationship with them, and not their experience (3).

Addendum: The quality of your doctors organization and staff may be even more important than that of your doctor (4).

(1) McAlister, F. A., Youngson, E., Bakal, J. A., Holroyd-Leduc, J., & Kassam, N. (2015). Physician experience and outcomes among patients admitted to general internal medicine teaching wards. Canadian Medical Association Journal, 187(14), 1041-1048.

(2) Southern, W. N., Bellin, E. Y., & Arnsten, J. H. (2011). Longer lengths of stay and higher risk of mortality among inpatients of physicians with more years in practice. The American journal of medicine, 124(9), 868-874.

(3) [https://www.researchgate.net/profile/Alan_Swann/publication/...](https://www.researchgate.net/profile/Alan_Swann/publication/244481312_The_Medical_Alliance_From_Placebo_Response_to_Alliance_Effect/links/02e7e526c4be05b0d7000000.pdf) and Wampold, B. E., Imel, Z. E., & Minami, T. (2007). The story of placebo effects in medicine: evidence in context. Journal of clinical psychology, 63(4), 379-390; and [http://www.annfammed.org/content/7/3/261.full](http://www.annfammed.org/content/7/3/261.full)

(4) [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2586978/](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2586978/) and [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3568449/](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3568449/)

<comment><USER5> Not going to talk about this generally, but this may not be the case for surgeons, and it depends on the procedure etc. This was one study showing that surgical volumes improved outcomes:

[http://www.nejm.org/doi/full/10.1056/NEJMsa012337](http://www.nejm.org/doi/full/10.1056/NEJMsa012337)

<comment><USER15> That study was on hospitals though - although yes the same applies for surgeons (1), and obstetricians [although the benefits begin to deteriorate at around 50 (2)].

But cardiologists were what the original study was on, and they don't perform surgery. Rather, they are relied on for their "expert judgement", a highly questionable concept (3).

(1) [http://www.sciencedirect.com/science/article/pii/S1743919113...](http://www.sciencedirect.com/science/article/pii/S174391911301008X)

(2) [http://www.bmj.com/content/344/bmj.d8041.short](http://www.bmj.com/content/344/bmj.d8041.short)

(3) [https://www0.gsb.columbia.edu/mygsb/faculty/research/pubfile...](https://www0.gsb.columbia.edu/mygsb/faculty/research/pubfiles/1152/Process_and_performance_of_experts.pdf)

<comment><USER5> Sorry yes, wasn't saying anything about cardiologists, just wanted to point out that surgery might be different.

I'm familiar with the second study you mention there - I'd take it with a large grain of salt! It highlights the issues with so many medical studies and how hard they are to get right with limited data. The study attempts to generalize surgeon performance based on age for only 22 surgeons that did 'enough' operations that year (for one complication, only 15 for the other), while trying to account for all the other factors (patients, difficulty of operation etc.), and not accounting for the wildly varying volumes for each surgeon and the fact that the study had a large cluster of younger doctors, and not many older doctors (look at the plots) It just doesn't have enough data to be a good study in what they attempted.

<comment><USER15> Ah, good point. That's why I try to stick to reviews or meta-analysis, but was too lazy to look more that time, especially since it sounded right. Do you know at what age surgical skill starts to drop due to aging? I found a review that talked about how older surgeons stop taking on more challenging cases, which was interesting - but it didn't mention anything about that.

</comment></comment></comment></comment></comment><comment><USER16> Maybe when the top doctors are away at meetings the sickest patients no longer get transferred to the tertiary center for care and are kept at the local hospitals.

<comment><USER17> I think this is an unlikely explanation, but you got an upvote from me for even suggesting an alternative explanation for the findings.

</comment></comment><comment><USER18> Very bad title: it implicitly equates "Good Doctors" with "famous doctors" rather than with "doctors whose actions benefit patients". The real point of the article is that one should ask questions and be personally involved in care decisions, rather than just taking the doctor's word. But the linkbait headline obfuscates that point.

<comment><USER19> The authors suggest it is due to a reduced number of unnecessary treatments:

>"Our results echo paradoxical findings documented during a labor strike by Israeli physicians in 2000, in which hundreds of thousands of outpatient visits and elective surgical procedures were cancelled, but by many accounts mortality rates dramatically fell during the year.27 Similar reports of decreased mortality during physician labor strikes exist elsewhere, with most hypotheses attributing mortality declines to lower rates of nonurgent surgical procedures.28"

[http://archinte.jamanetwork.com/article.aspx?articleid=20389...](http://archinte.jamanetwork.com/article.aspx?articleid=2038979)

However, they do not seem to consider that mortality rates are seasonal and so are the meeting dates. The seasonality differs for different causes of death. A quick search came up with this for heart-related causes, so for example:

>"When grouped by season, we observed the distribution of the 449 coronary heart disease fatalities to show a relative peak in winter (32%) and relative nadir in spring (21%)."

[http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3756551/](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3756551/)

What they should have done is plot mortality by week so we can see if there is a sudden dip around the conference dates.

<comment><USER18> _> What they should have done is plot mortality by week so we can see if there is a sudden dip around the conference dates._

Agreed, this would be a better test of what they are claiming.

<comment><USER19> The day of week probably matters as well. For example, the conferences will always span a weekend, giving a biased sample of days. I think it is a mistake to try interpreting this data without considering it as a timeseries.

</comment></comment></comment></comment><comment><USER20> Is it possible that top doctors are just taking on the most challenging cases?

The implicit "explanation" [which seems testable and currently unverified] is that senior cardiologists attempt more interventions [eg angioplasties], and each intervention carries some risk.

It could be true, but why report something that wasn't in the paper?

<comment><USER14> The study compared results at hospitals when senior doctors were away at cardiology conferences with the same hospitals when the senior doctors were present. They also restricted the study to "acute, life-threatening cardiac conditions" so presumably these were cases that could not be delayed until the senior doctors returned. That seems like it would eliminate most of the effect of case selection.

</comment></comment><comment><USER21> I highly recommend _Overtreated: Why Too Much Medicine Is Making Us Sicker and Poorer_ (2008) by Shannon Brownlee.

When you have a hammer, everything looks like a nail. That's especially so when you're deep in debt from buying that hammer, and can earn huge speaking fees through promoting the brand to your peers.

<comment><USER22> #iatrogenics

Nassim Taleb discusses this concept from a broader perspective in _Antifragile_.

</comment></comment><comment><USER23> Because the journal article being discussed in this NYT piece is not actually linked from within, let me share the link:

[http://www.ncbi.nlm.nih.gov/m/pubmed/25531231/](http://www.ncbi.nlm.nih.gov/m/pubmed/25531231/)

</comment><comment><USER24> I'd offer case-mix as a simple explanation of the findings. In other words, when lots of cardiologists in a hospital leave for a conference, elective procedures are deferred until their return... which means that emergency cases constitute a larger proportion of the reduced number of cases that do come into the hospital during the conference. It is completely reasonable to believe that emergency cases have a higher mortality rate than elective cases. This would raise the mortality rate, but not the mortality count. The same effect would probably be seen over long holidays, when people tend not to schedule elective cases.

</comment><comment><USER25> When those senior doctors are out of town, are risky-but-necessary procedures performed by less senior doctors or delayed until the senior ones return?

</comment><comment><USER26> Thats the reason I don't like dentists who are also proprietors and have fewer patients due to the location of their clinics. Too much conflict of interest - there is no point for them to wait and see if a tooth can reinitialize, they'd rather take off healthy tissue to make a buck. I'd rather go to a established chain clinic where dentists are employees and they always have patients anyway because of the location (large popular mall).

<comment><USER26> reiminiralize _

</comment></comment><comment><USER27> Maybe the most famous doctors only get called in on the most difficult cases (i.e. the ones with lowest probability of survival). When they're out of town, patients with these difficult cases get sent to other hospitals where the famous doctors are not out of town.

</comment><comment><USER28> Residents won't want to do risky procedures that increase longevity more than plain, supportive care that will help the patient live 30 days, but not 3-5 years or more.

</comment><comment><USER29> All professions have a focus on their strengths. Second opinions have a way of opening the direction to take.

</comment><comment><USER30> 40% of people eating dark chocolate got hit by lightning. Come on people. No more statistics.

<comment><USER31> The problem with the statistic you bring up is that it lacks context like what percentage of the general population eats dark chocolate. If only 20% of the population eats dark chocolate then it's a very interesting statistic.

When I look at the article I don't see any crimes against statistics, and I'd be curious what statistic you think is contextless or misrepresentative.</comment></comment>


Me and Harry Potter - <AUTHOR> http://www.thomastaylor-author.com/me-and-harry-potter/ <comment><USER2> This was the cover I had as a very young girl.

I remember reading these and watching them take me to fantastical worlds. Good memories.

</comment><comment><USER3> Please Bloomsbury or JK Rowling, send this person a hardback copy

</comment><comment><USER4> ah man while i like Harry Potter, i never liked the British cover arts.

I did grew up with the german ones anyway but when i switched from reading german to english, i bought the adult version because of the cover art.</comment>


Edward Snowden's Real Impact - <AUTHOR> http://www.newyorker.com/online/blogs/comment/2013/08/edward-snowdens-real-impact.html

<comment><USER2> This is ridiculous, are people still claiming that no illegality was revealed by Snowden? If nothing else, we have Clapper's admitted lie to Congress.

</comment><comment><USER3> He's writing in the New Yorker. New York City is still widely considered to be the #1 terror target and the New Yorker magazine knows what it's readers will probably want to hear.

</comment><comment><USER4> Nice try NSA.

</comment><comment><USER5> "[T]here is no doubt about the nature of China and Russia."

Forgive my indolence, but I'm not that worried about the nature of China and Russia -- I can read a history book, assuming anything in them is true.

I worry about the nature of the United States of America. Either we respect the rights of our citizens or we do not. Either we have controls in place or we do not. Either we have an appropriate level of transparency into government operations or we do not.

And if we do not, then why did we bother breaking away from Great Britain?</comment>