Ask HN: Are computer scientists inherently good at programming? - <AUTHOR>

<comment><USER2> This would normally depend on if the computer scientist has only a Bachelor's degree or Master's and above. Once you get into the Master's degree level more hands on and less theory is required. Since you normally have to apply all the math and other concepts from your undergrad or required admission courses for the M.S. that you have learned to your Major in computer science by building working solutions to a problem (applications that other can run).

Normally a M.S. in Computer Science will require you to develop production quality application in one or domains like: Artificial Intelligence, Databases, Software Engineering, creating your own programming languages and operating systems, visual computing, big data, neural networks, robotics,etc. So someone that has normally completed a M.S. should have the ability to program some very nice high end applications to solve very difficult problems.

Some of the applications are pretty advanced for example someone Majoring in Artificial Intelligence or robotics would normally be required to build an AI system for the robot to do somethings on their own. Depending on the requirements this could be the development of an autonomous machine that can run or fly on it's own to an autonomous cyber security defense system that automatically plus security holes in systems, to automated financial trading and risk assessment systems used to protect companies against fraud or internal threats.

If you need background information, ask the computer scientist about things they have built, they should a nice list of things they have built during both their undergrad and graduate along with wanting to show you their work. I would not recommend working with someone who is all theory and academic with no practical experience in building real world applications until they gain more real world experience. Unless you are wanting to work with just idea people which is fine for getting new ideas for new products and services.

In summary if they have a master's degree in computer science they should have some serious experience in solving some difficult problems using advanced programming techniques for those problems.

If the person has a Ph.D. please be sure to check if they previously had any hands on experience in practical development of applications as some Ph.D. programs do allow you to skip the hands on part normally found in a M.S. program, only requiring the higher level math, theory courses, dissertation, comprehensive exam and/or residency requirement as the normal requirement for a Ph.D. is a 4 year baccalaureate degree. Though most Ph.D. programs will end up including the credits you would have taken for the Masters degree along the way to completing the Ph.D.

</comment><comment><USER3> I expect they aren't, not all of them. Rather they are good at proving things.</comment>


Designing a study to see if "the 10x programmer" is a real thing - <AUTHOR> http://andrewgelman.com/2014/12/04/designing-study-see-10x-programmer-real-thing <comment><USER2> Depending on the field, it could be as much as 40x. We had a firmware engineer, who in 3 months, single handedly wrote an entire FHSS MAC layer for an RF application, with a high level of quality and hundreds of functions, while simultaneously laying down the architecture for it's growth over the next seven years. He was extraordinarily capable, intelligent, and had worked on the identical project in the previous 5-6 years, and so was able to anticipate all the blind alleys to avoid.

I'm reasonably confident that a low-performing engineer with little or no experience in this space would have taken seven-ten years to accomplish the same feat at the same level of quality and completeness. (Of course, it could be argued that our engineer _had_ taken seven years to accomplish this task, it's just that they had worked six of them at a prior company)

The _challenge_ in these types of tests, of course is (A) who defines/measures quality, (B) How do you know which functions were essential? Programmer performance is not a function of how fast you can complete coding challenges, but how well you can architect, document, communicate, collaborate, and all the other peripheral functions not associated with cranking out algorithms.

<comment><USER3> How does that qualify as 40x? It's not reasonable to compare an engineer who has worked for 5-6 years on an identical project to an engineer that hasn't or has less work experience.

For this particular task he may have been 40x more effective than anyone else but only because he walked the path before.

<comment><USER4> Do you pay programmers with 5-6 years experience in a domain 40x junior programmers?

<comment><USER5> Productivity as an inherent property of a developer has to be for "unseen" tasks. If someone started working with me today I'd be more than 10x as productive as them tomorrow and maybe all of next week. That is relevant for a company, but not really interesting.

<comment><USER4> That only means instantaneous productivity isn't useful. Fortunately most employers know this: The employer pays for a mean-productivity-over-time.

If your productivity falls below that value you will get fired, and if it exceeds some other bound you may be bonus'd or promoted.

However _if_ the productivity exceeds this line by 40x, then the question remains: Do you pay your programmers 40x?

</comment></comment></comment></comment></comment><comment><USER6> A productivity factor is not a good way to model programming ability.

I consider myself a decent programmer, but I'm not that much more productive in terms of features/week than other less skilled programmers.

The real difference is that I can do things that poor programmers simply cannot do: architect a system correctly, optimize performance, debug a difficult memory leak, write correct code, etc.

<comment><USER7> This. Measuring productivity is useless if you are producing the wrong thing. Even ignoring all the things programmers do other than writing code, this idea still completely ignores the many external factors that interfere with productivity.

Organisations are more than the sum of their parts. It's not like you can take a bunch of 10x programmers from a successful project, put them on a failing project and expect them to just get it done. Why is 10x programmers a thing but not 10x management?

</comment></comment><comment><USER8> Programming shops are full of both 3x and -0.5x programmers. Many 3x programmers end up looking after a group of say four -0.5x programmers, and so after cleaning up after them they themselves come out looking like mere mortal 1x programmers (because 3 + 4 x -0.5 == 1 ).

</comment><comment><USER9> I suspect that all this 10x buzz is coming from the overstretched, sleep- deprived people who accidentally managed to come to work once or twice well- rested and realised: "omg! I'm 10x compared to my usual self!".

<comment><USER10> I don't. I recently witnessed someone writing a 10 line function to test for a particular condition in our codebase. I could have done it in less than one- line, by re-using pre-existing code.

What took them 10 minutes would have taken me 1. My solution is also more in- line with how it's done over the rest of the codebase, if you applied my approach 100 times you would have a consistent and easy to maintain codebase, apply their approach 100 times and it would be inconsistent and harder (more time consuming, more expensive, more risky) to change.

That's where the 10x comes from.

Edit: Just in case they're reading this... I don't think this is because I'm a better engineer or you're a worse one, I blame our lack of documentation and training for this feature!

<comment><USER9> That's an anecdote, not an evidence. Same as my own revelations after trying to work while being unusually well-rested.

The next day the same person may do something 10x times faster than you, because of the differences in your past experiences, problem solving methodology, etc.

What really matters is amortised performance, and there is no evidence that there exist a significant deviation in such among professionals of comparable experience profiles.

Of course, someone who already did something ten times will then do the same or a similar thing in no time, while a completely new problem will be faced with blank eyes by anybody otherwise smart and experienced. It's such an obvious thing that it cannot be a source of a myth on its own.

</comment></comment></comment><comment><USER11> How about making comparative test where one subject has suboptimal conditions?

\- no objective given, or change objective in middle of test

\- no IDE allowed, only notepad and outdated compiler

\- place next to garbage bin or turbofan engine

\- randomly generate some 'legacy code'. Result must contain 90% of this code...

\- no internet connectivity allowed

\- no external libraries allowed...

\- code must be deployed within 1 week, it must past code-review before deployment, reviewer is on holiday....

\- ask subject some trivial question every 10 minutes. Or thrown in 5 hours meetings randomly.

I am sure the productivity will vary... :-)

<comment><USER9> You forgot to add a Swordfish-like hacking scene to this list.

<comment><USER12> Without mentioning the off work life challenges. I mean those have possibly an impact that often see dismissed in those stories about 10x engineers.

</comment></comment></comment><comment><USER13> Not sure why x10 is such a surprise. It [software] is a good field with decent money and a low barrier for entry at a lot of places. Not everyone can be Dennis Ritchie.

If songwriting had lots of well paid jobs open to virtually anyone with a hobby interest or non-related degree do you think everyone would produce like Lennon/McCartney?

You could give me a million years and I wouldn't write the Linux Kernel but I can still produce useful software which improves someone's productivity.

<comment><USER14> You couldn't write the 2014 Linux kernel because it is the product of thousands of people and millions of dollars , you could probably write the 1991 Linux kernel given time and motivation. Linus did a lot of things wrong in the early days.

</comment></comment><comment><USER15> Why does the "10x programmer" myth live on? Because all supporters assume that they are one of the '10x' \- or at least aspiring to be one of those. It's a self-energizing myth.

<comment><USER16> Because, for complex software, it's not a myth.

<comment><USER17> I think it is partly a myth. It can probably only work for small parts/systems. If a large system has to be written and it takes 3 good developers 2 years to do it it will probably still won't take 3 "bad" developers 20 years to do it. They will learn things when they work. If I can write a few (like 5-10) classes to do something and it takes me an hour that still don't mean someone can write it in 6 minutes.

<comment><USER4> I've always understood the origin of the "10x programmer" was about overall performance, and not mere "time-to-type". That is: we're talking about the reported value of the employee to the company.

In that way, the best performer is as much as 10x the worst; but the best performer is probably only 2-3x the majority.

</comment></comment></comment></comment><comment><USER18> A developer can have negative performance, either by wasting time on the wrong thing, or by producing a solution that is flawed and needs to be rewritten (if the project survives). On the upside, a developer can invent a whole new way of doing things, and as such acheive things that an arbitrary amount of other developers wouldn't be able to. As such, 10x may be a useful metaphor, but in real terms is a gross understatement. It may make more sense in traditional enterprise settings where most things are determined from above, but in startup settings, a good developer can make or break the company.

</comment><comment><USER19> Do you want to test the productivity of programmers with FizzBuzz or writing an OS from scratch?

The distribution of productivity amongst engineers is probably going to vary depending on the complexity of the task.

Some tasks I would expect the top performers to be far better than 10x at.

And not all top performers are equally suited to each task.

Additionally this idea of measuring productivity purely by problem solving ability is nonsense as engineers are hired also based on their ability to write maintainable code and to work as a team, etc.

</comment><comment><USER16> It's hard to study. The initial studies were coding time, but the productivity difference comes down to a few things:

* Good architecture choices. These make a big difference in total development time.

* Communications. A team of 50 1x programmers has much more overhead than a team 5 10x programmers.

* What's possible. There are some things some people just can't do, even given infinite time.

* Process overhead. Bad people require much more process than good people.

Overall, the difference in productivity between small, good team of expensive people and large, bad teams of mediocre people is much more than 10x for complex systems. It's very small for large, simple systems (e.g. "business" systems which handle inventory, HR, etc., which just have a very large number of relatively independent simple bits).

That explains super-high-profit companies like Valve.

Once organizations get into the mediocre person game, it becomes almost impossible to go back. Good people won't want to work there. If they do, the amount of process will slow them down. You won't leverage them well -- you still have the communications overhead. They'll always be told what won't work. Etc.

</comment><comment><USER14> What task could these programmers perform that would not be biased towards programmers who have recently solved similar tasks?

<comment><USER20> depth of exprinace is a factor eg yesterday I wrote a feature extraction tool in 2/3 of a day (including geting up to speed with python) to strip out the usable body copy for a large uk website.

I could do this so quickly becase I had 3 years previously spent several days experimenting with new scientist's archive and allready knew what library would work.

</comment></comment><comment><USER5> Like so many before, this post seems to avoid the fact that while there is talk about a "10x variation" in productivity, that's not really the controversial claim, if by variation we mean "range" or "span". To find a 10x span just look for a 1/10 dev and you are done. _There is no lower bound in productivity_ so the ratio of productivity between least and most productive is infinite since there are likely some that produce zero value (I'm pretty sure I've met those that deliver negative value).

So. Before one designs a test to find a unicorn one should define unicorn. Is it a certain _variance_ in the sample? A variance such that at least one sample point is 10x more productive than the mean, that is at least well defined, but how large would the sample size have to be if you are looking for a single unicorn?

<comment><USER21> I think this is a good point. After all the claims about how the _majority_ of self-described programmers can't write FizzBuzz, are those of us who _can_ write FizzBuzz already 10x programmers before we even get started on anything harder?

</comment></comment><comment><USER4> This made me think about how Arthur's been passing around some cs107 challenges that he found online.

Here's one of them: [http://web.stanford.edu/class/cs107/assign2.html](http://web.stanford.edu/class/cs107/assign2.html)

The advice page suggests the student hours spent on this project is:

        * < 5 hours 5%
        * 5-10 hours 14%
        * 10-15 hours 19%
        * 15-20 hours 38%
        * 20-25 hours 14%
        * more than 25 9%

Pierre did a solution in 1hr 30m; I was just under an hour.

I wonder how people do here?

</comment><comment><USER22> Whether "10x" exists depends entirely on the problem domain and the way you define productivity.

If the problem domain is building an HTML login page, and your measure of productivity is time to complete, then a 10x programmer probably doesn't exist. A whiz maybe writes it in 5 minutes and the average Web dude takes 20. Typing speed may be the limiting factor.

If the problem domain is building a better way to search the Web, and the way you define productivity is in long-term revenues generated, then Larry Page and Sergey Brin are billion-x programmers for building Backrub/Google.

</comment><comment><USER23> The point is some people will provide an order of magnitude more business value in the long run. Most of that value will be outside of "implementation skill". The 10x programmer isn't really just a programmer. The more decision making power one has the higher the potential multiplier. Trying to find "the 10x programmer" in a large enterprise or a consulting company is like looking for a lion in Sweden. Though even with simple tasks 5x is probably not that rare.

</comment><comment><USER15> What do they want to achieve? You certainly can find one woodchopper who is 10 times as productive as one other woodchopper. But what does this say about woodchoppers?

<comment><USER24> Once you find 10x woodchoppers exist you study the differences between them and 1x woodchoppers.

Do they use different swing of the ax? Do they chop different wood? Are their axes sharper or heavier or have longer handles?

You then take those things and give them to the 1x woodchoppers and see if it makes any difference.

<comment><USER25> The reason you might see a 10x woodchopper is that you measured their productivity for an hour, and the other guy was on his lunch break for 45 minutes.

Similarly, engineer productivity may be one level one week and a different level another week.

What if you could measure lifetime productivity? Or over 10 year period. That'd be more insightful.

</comment></comment></comment><comment><USER26> _Peopleware_ was one of the sources for the "10x" concept. However, the book only said the best:worst ratio was 10:1.

As for the rest:

 _Count on the best performer being about 2.5 times better than the median performer._

 _Count on the half better-than-median performers outdoing the other half by more than 2:1._

[http://javatroopers.com/Peopleware.html](http://javatroopers.com/Peopleware.html)

<comment><USER27> mythical man month was the one wot done it

</comment></comment><comment><USER28> The "10x programmer" myth is a fallacy that boosts the rat-race mentality in programmers, believing you need to be able to solve problems with quick hacks in order to be considered "a good progreammer". But the problem is: productivity is not a constant. It's more like a tide, when it comes, it comes strong, but then it fades and you can't do anything about that. Unless you're a robot. Also, engineering is that fancy field, that often gets overly excited about short-term wins, loosing the track of the bigger picture — one programmer can do something in 15 minutes, using lots of poorly designed hacks, without any optimisation or deeper thought, which will come back to bite very soon; and another programmer might take few hours, making a solution that will be rock-solid even after some time. The short-term "productivity" is in favour of the 1st one, but in reality the 2nd one is more productive in the long run.

</comment><comment><USER29> Speed will also depend on length of the task. If you use 1 hour long simple task, you will have less variance. Significant results could show only with 1-week task or longer.

<comment><USER17> See my previous answer. I don't think it works for longer tasks either since developers learn while coding. And if it takes 10 months to build a system it still might be impossible to do it in 1 months even if you're skilled.

</comment></comment><comment><USER30> from my own experience ... there are negative-value-created developers ... 1/1 is 1x, 1/0.1 is 10x, 1/0.01 is 100x ... 10/0 is infinity, then 10/-1 ??? not very well defined</comment>


The Art of Unix Programming - <AUTHOR> http://www.faqs.org/docs/artu/

<comment><USER2> I bought this book years ago, and the title is misleading. It is not so much a programming, as ESR's personal interpretation of UNIX culture and values.

If you like ESR, you will probably love it. If not, it will read like unstructured drivel.

Maybe, I am too negative. But if you are a non-UNIX programmer, and have to work on a UNIX project, there are far better books available. (E.g. Advanced Programming in the UNIX Environment, by W. Richard Stevens and Stephen Rago)

<comment><USER3> To be fair, the subject of the title is "Art" and the object is "Programming". This is about the art and care that developers should put into the Unix community and the tools they build. In a way, it's an intro to the mindset and philosophy of openness in technology.

</comment></comment><comment><USER4> Does anyone else find ESR's writings to be haughty and a bit sophomoric? He may be brilliant, but every time I pick up this book I get turned off almost immediately.

<comment><USER5> I find his stuff to be infectiously enthusiastic and inspiring.

</comment></comment><comment><USER6> Besides using wget to rip the entire thing is there a tar.gz or zip handy with everything in it? Flying soon and would like some offline reading material...

<comment><USER7> > _This book and its on-line version are distributed under the terms of the > Creative Commons Attribution-NoDerivs 1.0_

So I think it is OK to post this PDF version.

[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.103...](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.103.2799&rep=rep1&type=pdf)

<comment><USER6> Thanks very much....I really need to get a tablet just for these types of books...

<comment><USER7> Just make sure that you don't get one that is too small - I borrowed an iRex iLiad [1] from the library at the university, and I found that the 8.1-inch (21 cm) display meant constant "scrolling" with the touch-pen, which was rather annoying due to the high response-time of the system.

The only book that I finished reading on it, was _Mercurial: The Definitive Guide_ by Bryan O'Sullivan [2]. The reason that I could read this book, was that it was released for free online by the author with all source files so that I could compile it in a smaller page-format with bigger fonts (the figures did not scale automatically, but IMHO, they weren't crucial to understanding the content of the book).

[1]: <http://en.wikipedia.org/wiki/ILiad>

[2]: <http://hgbook.red-bean.com/>

</comment></comment></comment></comment><comment><USER8> I found this book at my university's library, and ended up spending most of the day reading it there. I liked it, and didn't know it was online, too.

</comment><comment><USER9> The entire faq is very very long. Here's a tl;dr high level list of rules and philosophies: <http://www.faqs.org/docs/artu/ch01s06.html>

<comment><USER10> It's not a FAQ but a book!

</comment></comment><comment><USER11> This contains some good bits, but "The Unix Programming Environment" by Rob Pike and Brian Kernighan is a much more eloquent and concise explanation of the essence of the Unix philosophy.</comment>


Twitter / Error - <AUTHOR> https://twitter.com/ <comment><USER2> Where do you go to complain about twitter being down when twitter is down?

To HN, apparently!</comment>


Photoshop for web design - <AUTHOR> http://csspiffle.com/

<comment><AUTHOR> Looks like its going to be a web app. Can not wait to try it out.</comment>


The Chinese Communist Party's fear of its people spells trouble - <AUTHOR> https://www.economist.com/open-future/2018/06/15/the-chinese-communist-partys-fear-of-its-people-spells-trouble <comment><USER2> I'd argue that a government is _supposed_ to fear its citizens. It's just not supposed to censor them and take away their rights to quell that fear: rather, it should hold itself accountable and not do things that would cause resentment.

<comment><USER3> That's (to my ears) a very American sentiment. I'd say the closest thing we have in Europe would be found in France. It also carries a soft but audible 18th century, liberal resonance. Yous really are sister republics. Heh.

Anyway... I disagree (amicably). I think this is a terrible state of affairs. A fearful regime is a dangerous one. Fear is the enemy of "us" and this is degenerative to a republic, and oppressive in non-republics. The GDR feared the people would overthrow. Assad fears the people.

It doesn't generally result in "we'll do a better job so they like us." It results in building up a populist (and sometimes violent) popular counterbalance. It results in paranoid spying and attempts at control.

I know HN prefers high brow, philosophical quotes but this really does sum everything up, even if it's campy.

 _Fear leads to anger. Anger leads to hate. Hate leads to suffering_ \- yoda

<comment><USER4> > I'd say the closest thing we have in Europe would be found in France

I don't know about other countries, but you're right, some Frenchmen want the government to fear them, because it's one way to keep the power in check. We also have a really strong executive power who kinda own legislative rights and have control over a tiny bit of the judiciary system, so it's understandable.

<comment><USER3> :)

I won't pretend I understand the nuances but to us it seems almost comical. Train schedule changes, and people are upset? Fires will be lit.

<comment><USER5> Oh come on, people in France are upset because [1], and especially given his election platform that's more than understandable imho.

I mean, given who Macron was this was entirely predictable, but many people believed he'd changed. For what reason ... I cannot fathom. But then again, Australia did essentially the same: an ex-Goldman Sachs vice president (with half his immediate family still GS VPs) will change the country to be more fair ! Oh wait ... he didn't. Quite the opposite in fact. Cue complete and total amazement.

[1] [https://www.politico.eu/article/macron-labor-reform-5-key- po...](https://www.politico.eu/article/macron-labor-reform-5-key-points/)

</comment></comment></comment></comment></comment><comment><USER6> This seems to be the key paragraph:

      > A confident power permits debate to flourish, unthreatened by ideas; a fearful
      > one will seek to manipulate or shut it down. The party is increasingly obliged
      > to try to replicate its domestic censorship on a global scale, to suppress
      > views of China that the party does not like, wherever they are manifested.
      > Sustained investment in propaganda in Chinese-language media and in Western
      > media, subtle and unsubtle attempts to exert influence through the party's
      > United Front Work Department, pressuring business partners to support
      > political positions on Taiwan and the South China Sea, buying political
      > influence and muscle-flexing on Western campuses—all have caused alarm in
      > several countries recently, notably in Australia and New Zealand.

I guess it shouldn't surprise anyone that China is trying to control the narrative overseas. Most major powers try to do the same.

<comment><USER7> This is a good point. I definitely support free speech (that should go without saying), but it seems to be spread with a fervor not unlike how Christianity was spread during colonization.

For example, is the quality of life in Mexico--with free speech and democracy --better than one like Singapore or even China?

There are also different ideals of free speech too. The US version is very different from the European version.

Free speech should be ultimate goal, but perhaps there are other steps that need to be achieved first.

<comment><USER8> Mexico doesn't have free speech in practice: If you speak out against the wrong people you get killed by the cartels. Also, we don't know what the quality of life in China is, because ... you cannot talk about things which are critical of the government.

That is technically correct, but being allowed to criticize the government without getting send to a prison seems to be a common denominator, so we could start with that.

That assumes you cannot work on free speech and "other steps" at the same time. Free speech is so easy, blocking it costs more resources than just accepting it. These resources could be used for "other steps", so blocking free speech is detrimental to them.

<comment><USER9> > we don't know what the quality of life in China is, because ... you cannot > talk about things which are critical of the government.

If you want to know what the quality of life is like in China you can visit China and meet people living there. Visas are easy to get. It's not a secret, and there are plenty of first hand accounts of even their darkest hours.

</comment></comment></comment></comment><comment><USER3> This is a tangent, but I noticed how this line feels like it (almost) requires no further support:

" _liberal democracy's current ills have opened an.._ "

While I'm not disagreeing, just don't recall reading a decent narration on what exactly is going on. What are liberal democracies' current ills? Did we agree on a list, when I wasn't looking?

<comment><USER10> There are some trends in current international relations that are worrying for many people who support liberal democratic principles. The failure of the Euro, which was a landmark liberal project. The Brexit vote in Britain. American protectionism. Russian political interference and military aggression. China's renewed suppression of individual liberties and its moves to export it's totalitarian and censorious principles abroad.

To be sure some of these are self-inflicted. The Euro was badly conceived and implemented. Brexit and Trump are the result of democratic votes. However they are clearly signs of a general swing away from liberal values. Liberalism and it's proponents in it's broadest sense bears much of the blame for all of this.

By liberalism I do not mean socialism. I'm a lifelong Conservative voter. I believe in individual freedom and see the EU with it's freedoms of movement and trade as a cornerstone of individual liberties here in Britain and the rest of Europe. Trade free of arbitrary and capricious tariffs is another important freedom we are in danger of having curtailed. The Good Friday agreement that brought peace to Northern Ireland did so by granting Northern Irish the freedom to choose British or Irish citizenship or both and opened up the border, a triumph of increased individual liberty, and is under threat due to Brexit. Liberalism in it's broad sense cuts across the left/right political divide, at least here in the UK.

<comment><USER11> The Euro has failed? That's news to me.

<comment><USER12> Unemployment is at high levels in several eurozone countries, and this is blamed by some on the euro, and if you consider this a fair assessment and are unemployed I suppose you might think the euro has failed for you.

<comment><USER5> And if you were an elderly Greek, and saw your (not very generous to begin with by Eurozone norms) pension cut by 75% in order to save some German banks ? Would you consider that "failed" assessment to be fair ?

Investors, by contrast, might say that despite all the damage done to Eurozone economies (most, but of course, not all, Eurozone economies, ie. the PIIGS), European banks are ... well "teetering on the edge of bankruptcy" is perhaps not a fair assessment, but they're ~90% closer to it than they were at the beginning of the Euro project.

Savers, bond investors, ... have similar complaints : they haven't been able to invest productively.

And for what ? Even if they were altruistic : GDP hasn't exactly taken off in the Eurozone, in fact quite the opposite. Even Germany's GDP evolution can at best be referred to as "not a disaster". Greece's would be far beyond "catastrophe", and everyone else is in between.

But yes, 25 year olds who have a stable job find travel easier (of course, that's because the economic misery of others makes travel cheaper, otherwise the Euro would just have made it more obvious that they couldn't travel)

<comment><USER12> You misinterpret me - I think this unemployment problem is a scandalous waste of potential.

</comment></comment></comment></comment></comment></comment><comment><USER13> After meeting not one, but now around ~15 CCP members/officials of different statures in the party hierarchy. I can say that indeed a lot of things that drive the current generation of CCP's "hereditary nobility" (people in late forties to ~55 now) are manifestations of their social ineptness and insecurity.

Their comparison to frailing 19th century European nobility, I think, is totally appropriate.

What they afraid the most is "becoming nothing special people."

The world outside China scares them, as they see there is no place for people like them in the modern society that China _will_ inevitably and invariably become as it evolves economically

<comment><USER14> Thank you for this insight ... could you guess or know how many of these CCP functionaries, in spite of their insecurity, pursue their duty in good faith, versus engaging in self-dealing etc.?

<comment><USER15> It is really hard to get promoted as an idealistic CCP functionary, so if anyone makes it to the somewhat upper stages, they will most definitely be in on whatever their peers are doing (meaning, they have enough dirt so that their peers don't have to worry about them ratting them out, and they will put on great shows to please anyone higher than them so they can keep getting promoted). In the west, it is like finding an honest politician: they might exist, but they simply don't win elections enough that you can really find them in higher offices you pay attention to.

<comment><USER13> Sean, are you now in Shenzhen by any chance?

<comment><USER15> Nope. Moved back from China almost 2 years ago.

</comment></comment></comment></comment></comment><comment><USER16> This is a rather anemic entry in a 100-year-old genre. Westerners have been doom-mongering about the rise of China since at least the Boxer Rebellion.

The FT ran a more informative and sober piece a week or two ago, on China's gambit to create a global energy network:

[https://www.ft.com/content/bdc31f94-68aa-11e8-b6eb-4acfcfb08...](https://www.ft.com/content/bdc31f94-68aa-11e8-b6eb-4acfcfb08c11)

<comment><USER17> Yes, generally with the economist ignore the editorials and read the news:

[https://www.theatlantic.com/technology/archive/1991/10/-quot...](https://www.theatlantic.com/technology/archive/1991/10/-quot- the-economics-of-the-colonial-cringe-quot-about-the-economist-magazine- washington-post-1991/7415/)

As you say, doom-mongering about various parts of the world is a venerable genre and one which the Economist resorts to on a fairly regular basis (at least once a year there'll be scare pieces on China, and an article on why the French economy is doomed).

</comment></comment><comment><USER18> I've just started reading Silent Invasian: China's Influence in Australia, which made headlines around the world last year when its original publisher decided not to publish it out of fear of what the Chinese Communist Party and its proxies in Australia would react. That China has this sort of influence (see also all the airlines and hotels and other companies that bent over backwards to apologise for listing China and Taiwan as separate countries) overseas already is worrying.

On another note, I don't like the moral equivalency that seems to be popular between China and the US. The "but America does bad things too" response. The reality of America is often ugly, but it was founded and has always preached ideals like democracy and liberty and human rights and the rule of law. America's great failings are generally when it doesn't live up to its own ideals. Meanwhile, the Chinese Communist Party holds none of those ideals, sees the rights of the individual as completely subservient to the needs of the state, and has no qualms with wide scale censorship, jailing human rights lawyers and activists, harvesting the organs of political prisoners, etc.

In my opinion, one of the most unfortunate consequences of China's growing power is that it gives other authoritarian countries cover to abuse human rights. We seem to be seeing it in the Philippines with Duterte, and just last week a US citizen was arrested (and hasn't been released) in Vietnam after being involved in a protest.

<comment><USER19> When ever I see people comment on the Philippines I wonder if they have any idea just what's going on in the Philippines. I'm still yet to meet a single Filipino who does not like duterte.

<comment><USER20> Devil's advocate: I've yet to meet a single North Korean who does not like Kim Jong-un.

Popularity (both apparent and actual) and respect for human rights are frustratingly orthogonal.

</comment></comment></comment><comment><USER21> Interesting how the State-Socialist authoritarian countries ended up not actually being an existential threat to freedom, due to the weakness of a planned economy. But since China embraced capitalism, it's economy became very strong, and so is now a more serious threat.

</comment><comment><USER22> >To be a great, rather than just a big power, China needs the world's acceptance. More open domestic markets, fewer hidden subsidies and less dumping, less industrial espionage and less aggression in the South China Sea would all help.

Why? The US posturing and genocide in South America for 200 years did not stop it from being a great power, that the pacific rim will now see the same from a yellow and not white face doesn't change much.

<comment><USER23> It's funny how pundits from countries that have (and are still doing) all those things, point the finger at other countries for doing the same (and, internationally, far less).

"aggression in the South China Sea"? The US has invaded 3+ countries in the last 20 years producing as much failed states. Is it just a "big" and not a "great" power?

<comment><USER21> Note: The Economist is British.

<comment><USER23> UK itself has for 5+ decades been deeply tied to the power across the Atlantic, so?

</comment></comment></comment></comment><comment><USER24> From the article: "To suppress views of China that it does not like, the party is trying to replicate its domestic censorship on a global scale," says Isabel Hilton

Real purpose behind EU's copyright filter?

<comment><USER21> Even if that is not the intended purpose, it may inevitably end up being used for that.</comment></comment>


Media for Thinking the Unthinkable (2013) - <AUTHOR> http://worrydream.com/MediaForThinkingTheUnthinkable/ <comment><USER2> I think interactive models are fantastic for learning about systems and how they work. The thing is, it's difficult to design and create these types of models, even today (2018). I don't know that we have created tools that empower non-programmers to build such complex models.

Even knowing and understanding programming, you'll have to spend a considerable amount of time to create such interactive media. This might be worth it if you have an online learning company and you're selling educational content for mass audiences. For the one off technical paper or write-up, the dozens to hundreds of hours it might take to produce interactive media (assuming you already have those hard-earned skills) describing your topic is too much for most.

<comment><USER3> Agreed. His demos are always impressive, but my biggest worry for him is that he's stuck in demo-land. What's sorely missing is guidance (or code) that can help empower more people to create things like this.

But the reality is probably simpler in the sense that complex things are just that: complex, and modeling them is at least as complex, so it will always be hard, and it's only the meta-ideas that can have lasting applicable value. And he's pretty great at disseminating his meta-ideas.

As a non-academic and a web developer, if I were to publish some work of mine, I have always known that I would do it in the form of a webpage. That way, I can make it as dynamic as I need it to be.

<comment><USER4> _What's sorely missing is guidance (or code) that can help empower more people to create things like this._

[http://worrydream.com/Tangle/](http://worrydream.com/Tangle/)

<comment><USER2> Yeah but if you look at the code that drives those more complex examples, that is non-trivial for a non-developer.

</comment></comment></comment></comment><comment><USER5> I have a controversial opinion about this.

I was exposed to this in the beginning of my university period and at the time found it mindblowing. But now, many years later, do I actually regret it and wish I hadn't taken this as seriously as I did. Wishing everything I was learning was visualized, and ignoring means of teaching that weren't styled to "my type of learning" (i.e. visual) – primed by posts like this – actually prevented me from taking the effort to learn how to learn via more traditional methods, like through books. It's only now that I've realized that learning purely from visualizations (rather than being just a small aid at the end of personal sweat and effort) _deprives_ you from reaching an end-state of utter subconscious comfort with the thing you're trying to learn. Reading and forcing yourself to parse and make sense of a book brings about a much richer, personal, and flexible understanding which is more interconnected with other things you already grok (and this is not a skill anyone is born with; though different people might have different starting positions).

Visualizations are great for shared intuition, but it should only be used at the end of a long personal struggle which should involve hours upon hours of undistracted effort, preferably involving something tactile like a pen and pencil.

Another problem with visualizations is that they essentially act as a _certificate_ for "final understanding". People play with a visualization and think they understand the thing (like eigenvalues) because _someone said this is what you need grok in order to understand the thing_. But as any pure mathematician knows, that isn't where true learning ends. Only if you're personally convinced by a proof, without any need for external authority, should you stop making it any clearer. It can take multiple iterations of a linear algebra course to reach full enlightenment of what eigenvalues are. True understanding only comes after you've seen it from many perspectives.

<comment><USER6> > Visualizations are great for shared intuition, but it should only be used at > the end of a long personal struggle which should involve hours upon hours of > undistracted effort, preferably involving something tactile like a pen and > pencil.

There is a classic Alan Kay talk that touches on this very issue, called "Doing With Images Makes Symbols." It discusses what the true power of HCI really is: that complex ideas (or even "unthinkable" ones) can be expressed via HCI using some combination of visual, kinesthetic, and symbolic reasoning.

The whole talk is well worth watching, but here is the part I feel is most relevant for Victor's point: [https://youtu.be/p2LZLYcu_JY?t=1h7m10s](https://youtu.be/p2LZLYcu_JY?t=1h7m10s)

</comment></comment><comment><USER7> This reminds me of research into embodied cognition, but that's more physical than visual. [http://elevr.com/vr-data-and-embodied- cognition/](http://elevr.com/vr-data-and-embodied-cognition/) Here's a few experiments in how making new tools to feel things out physically can help people learn new ideas. [http://voicesofvr.com/515-embodied-cognition- experiments-wit...](http://voicesofvr.com/515-embodied-cognition-experiments- with-elevrs-math-museums-hyperbolic-space/)

</comment><comment><USER8> Itheburgs.</comment>


How To: Pitch Bloggers - <AUTHOR> http://paulstamatiou.com/2007/08/22/how-to-pitch-bloggers/ <comment><USER2> This is a great article not just about pitching to bloggers but sending press releases to anyone. The core of the post is a simple question, is your press release relevant? If not, save everyone's time and don't send it.</comment>


Show HN: Please review my new Server-Side JavaScript/CoffeeScript servers - <AUTHOR> http://cure.willsave.me/

<comment><USER2> From the page

> Everything is pre-installed and pre-configured. n* d., nginx already running > in front of ExpressJS (site is live when you get the initial build email), > mongodb, mongoskin, couchdb, running ExpressJS app, example RailwayJS blog > sample already generated, redis installed (for RailwayJS), CoffeeScript > installed, VIM support for CoffeeScript installed, psmisc package installed > (includes commands like 'killall'), ssh port reassigned, example > CoffeeScript code to access MongoDB, example CoffeeScript ExpressJS app, the > most popular/recommended NPM/JavaScript packages like Vows, Async, > Socket.IO, Backbone.JS, Knockout.JS.

This sentence is difficult to parse. What is n* d? Which technologies belong to what part of your product?

I'd rather have this explained with a bullet list or better yet a nice info graphic.

<comment><AUTHOR> nod. is N_dJS.. you're right, difficult to parse. Probably can improve that. I did put a bullet list on the features page. Graphics are a great idea thanks.

</comment></comment><comment><USER3> Personally I didn't like your main text introduction: "Don't waste hours, days or weeks researching server-side JavaScript, cloud providers and NoSQL, and then compiling, configuring and deploying the systems from scratch. Get a preconfigured virtual server with a running sample application powered by Express.JS."

Primarily the first sentence was a huge turn-off for me. Researching your technology and understanding it is never a waste of time. And Server-Side JavaScript is not some magic bullet where you need to know nothing but can write amazing applications. It is a tricky environment with some great power and massive 'gotchas'.

Personally I think you should either remove reference to research or fully embrace the word. A sales point could be more along the lines of: "Popular server-side JavaScript frameworks already connected and configured to allow you to jump directly into a working example. Great for bootstrapping your research project or spinning up servers for your already written application!" But, I have no silver-tongue so take my wording advice with caution. ;)

<comment><AUTHOR> Wow I really appreciate that! Do you want a link somewhere crediting you with writing that copy?

<comment><USER3> heh, no, that is fine. It cost me nothing and I am passing the savings onto you. ;)

</comment></comment></comment><comment><USER4> Page design feedback: You should make the "Free Trial" link more prominent (make it a button with a bright background). Bump up the line-height on all the text; it looks too crowded.

Features list needs to give more specifics about RAM, disk space, bandwidth, etc., not just a list of pre-installed software (especially things like Express and Backbone that are trivial for me to bundle with my app when I upload it).

The bullet point about "We don't make you go through a proxy" is useful. You could also brag that WebSockets work—last I checked, this is a big drawback on Heroku.

Is there a reason you refer to Node as "n*d." on the front page, and "nod." on the features page?

<comment><AUTHOR> Joyent wants a signed license agreement to say "N_de.JS" anywhere unless they decide your use of the trademark is "nominative" which is subject to their interpretation. They are giving out free licenses now but assuming revenue for the N_de.JS market increases to be more significant, one has to assume that there will be more and more pressure to extract a greater share of the revenues by using these license agreements to either stifle competition or to pull in fees. Especially since one of their main businesses seems to be directly competing with many of those services. So I'm not in a rush to sign a license with them and therefore just avoid using the term for now. It does look silly though so I may have to rethink that and consider this free (for now?) license thing.

Also thanks a lot for checking it out and the feedback. I made the CoffeeScript logo link to your book page.

<comment><USER5> IANAL, but you can use node.js as long as you make it clear you are not associated with the project and joyent holds the trademark.

</comment></comment></comment><comment><USER6> I can see this being valuable for developers who aren't interested in learning how to configure / tweak a VPS themselves (and I do know a few of those); not sure how big that market is, but there's definitely a market. Out of curiosity, is there any open-source solution out there (i.e: configurable script) to automatically pre-configure a blank VPS out-of-the box with a list of frameworks / libraries - something like EC2 images, but for a vanilla ubuntu server for example ?

<comment><AUTHOR> I know nodejitsu has some stuff along those lines, but I don't think its anywhere near as convenient as my image.

I also think, although I would have to check, that Linode probably has some kind of N_deJS stackscripts that someone made. Again, I doubt that it is as fully configured or as convenient as my service, and that will cost you almost twice as much, since Linode only has 512MB instances (which for many sites and applications I think is way more than you need with N_de) which cost $19.95/mo. Also that won't give you any kind of DNS setup which I am doing for you just by typing the machine name in (probably not a big deal for a lot of people but it does make it simpler).

Also, I am actually hoping people who know their way around a shell terminal _will_ want this. The idea is to avoid always having to build Node and configure Nginx and reassign ssh and some things that you really don't need/want to do from scratch every time unless you feel like you need to prove you know how or something.

</comment></comment><comment><AUTHOR> Question: I see a lot of people typing in machine names, for example, someone typed in jesus(.willsave.me), but most of those people did not actually sign up. Did you change your mind for some reason?

I really appreciate everyone's feedback so far.

I think if no one takes jesus.willsave.me I may set that up myself tomorrow or something. LOL.

</comment><comment><USER7> on your features page you've mispelt node, "nod v0.6.2 (via git)"

Edit: just noticed comments below about licencing of N_de etc etc, so I assume this is the reason

</comment><comment><USER8> I'm missing some contact information.

<comment><AUTHOR> Can you contact me through the orange button in the upper right? I thought that would simplify things for everyone.

<comment><USER8> Sorry, my bad, ghostery removed the button.</comment></comment></comment>


Inspirational xkcd - <AUTHOR> https://xkcd.com/2287/ <comment><USER2> I don't have a lot of pasta but I appreciate the sentiment

<comment><USER3> Well, then go buy some pasta immediately!

<comment><USER4> Pastaferarians!

</comment></comment></comment><comment><USER5> Would be nice if true.

</comment><comment><USER6> Watchmen quote ftw

<comment><USER7> BTW, that line in the book is _not_ delivered by Rorschach directly, it's the prison psychologist writing his notes.</comment></comment>


Why and How Goggle+'s Interface Is Kicking Ass - <AUTHOR> https://plus.google.com/u/1/115711522874757126523/posts/6EbG2uwnE3c

<comment><AUTHOR> I'm submitting this because I have been using Google+ with that same smile on my face. The interaction design is just so incredibly well done.

Here is one tiny example: How do you add someone as a friend (or rather to one of your circles) when you encounter them commenting somewhere?

Here is what you do in Facebook: You click on their name which takes you to their profile page and then you click the friend request button next to their name. A pop up opens where you have to click once again to send them the friend request. If you want to put them on a list before sending them the request you have to click another two times. That's five clicks and one page reload.

Here is what you do in Google+: As soon as you hover over the name a tooltip with a larger profile photo and that person's current company or university appears (to help you make sure that you've got the right person). You can still go to their profile if you want to but there is also a big add button right there in the tooltip. As soon as you hover over that add button (you don't even have to click it) a list of your circles with checkboxes appears and you can check or uncheck however many you want. (This interface also allows you to remove someone from your circles or to put them in a different or in an additional circle, it's really powerful.) That's one click and no page reload.

Also, since it's all happening around the profile name (the tooltip appears right next to it, the list of your circles replaces the big add button on the tooltip) everything is really close to each other. It's an interface that respects Fitt's law. When you use Facebook you have to mouse all over the place to get things done, when you use Google+ you only need minimal mouse movement.

You really have to use it to experience the difference (and to get the smile on your face). Facebook feels clunky and slow, Google+ feels fluid and fast.

It's astonishing, really. Gmail, for example, is certainly solid work but it's nothing like Google+. Google+ is a whole different level.

Edit: Arrrg, I'm partially wrong. Facebook actually also has a tooltip. It shows up after a second or so (vs half a second at Google+). So that removes two steps and the reload. There is still this huge request pop up and it's four clicks and no page reload.</comment>


Closing the Gap Between Performance and Interpretability in Visual Reasoning - <AUTHOR> https://arxiv.org/abs/1803.05268 <comment><AUTHOR> For a fairly accessible description of this work see [1]. As I understand it, they're addressing the problem of the internal functioning of DNNs being hard to interpret, by using composable NN modules.

[1] [http://news.mit.edu/2018/mit-lincoln-laboratory-ai-system- so...](http://news.mit.edu/2018/mit-lincoln-laboratory-ai-system-solves- problems-through-human-reasoning-0911)</comment>


The Aha of Monty Hall - <AUTHOR> https://email@example.com/the-aha-of-monty-hall-661ff743ac8b <comment><USER2> The real trick is in the wording. You choose a door. Monty chooses a door that is NOT be the car, leaving one that may or may not be the car, depending on if the contestant was wrong.

In _words_ Monty pretends to be removing ONE door from the pool of choices, but he's not doing that - he is removing ALL possible doors except for the one that is a car if you were wrong, or a goat if you were right, and then saying (truthfully) that every single other one is a goat. When there are 3 doors, that is one that gets discarded. But that's the tricky word play.

Now, if you did it with 100 doors, Monty isn't simply removing 1 option to give you the appearance of a 50/50 chance. He is removing ALL of them except for 2 - one that he shows is not a car, and the other that you have to decide whether your first choice was right or not.

Following the same exact sequence, he removes _97_ of them from the pool because they are all goats, leaving the one you chose, the one he says is NOT a car, and one that is the car if your original choice was wrong, or a goat if your original choice was correct. Suddenly it is super obvious that this is no 50/50 choice.

That's how the Monty problem actually scales. Looking at it from a game with 100 doors makes it extremely obvious that the person's first bet is more likely to be wrong than right, and that changing is the obvious choice to make since the odds are 1/100 that your first choice was right, and 99/100 that the one Monty left behind is the car.

Hence in the normal way of playing the game, it is a 2/3 chance the contestant is initially wrong, and should always choose to change their choice.

</comment><comment><USER3> I often see people try to "prove" the solution to this problem as the author did, using a large number of trials to approximate the long-term probabilities.

But I don't think this method really proves it, nor does the proof require so much work.

Consider that C = car and G = goat. There are three possible configurations of cars and goats, represented by rows of the matrix, and the three doors are represented by the columns:

      C G G
      G C G
      G G C

Suppose you chose door #1 (it doesn't matter which door); you then have 1/3 chance of winning:

      (C) G G
      (G) C G
      (G) G C

The host reveals another door with a goat. That door is X'd out:

      (C) X G
      (G) C X
      (G) X C

Thus, if you stay with your original choice, you retain a 1/3 chance of winning, shown by the set [C, G, G].

If you switch, you have a 2/3 chance of winning shown by the remaining set [C, C, G].

<comment><USER4> I don't think the simulation is intended as a proof (it never is), more like the coding clarified the solution.

It is true that your method is simple and good enough, just that the most people might find it difficult to think in terms of abstract symbols.</comment></comment>


Getting your first job as a deep learning engineer: the current state - <AUTHOR> https://deeplearningretreat.com/getting-your-first-job-as-a-deep-learning-engineer/ <comment><AUTHOR> Author of the article here. Happy to answer any questions about Deep learning retreat, the social impact goal, or the job market.</comment>


ARK Investment big ideas - <AUTHOR> https://research.ark-invest.com/hubfs/1_Download_Files_ARK-Invest/Infographics/Big%20Ideas%202018%20-%20ARK%20Invest.pdf?hsCtaTracking=37c67fc6-1932-4b42-887c-ba1332a0e7a9%7C4a9f618a-acf9-428b-a7ab-11965014a86b <comment><AUTHOR> I posted this because it is the best tech roadmap I have seen this year. I have always just invested in low-load mutual funds but am getting interested in individual investments.</comment>


Improving Color on the Web - <AUTHOR> https://webkit.org/blog/6682/improving-color-on-the-web/ <comment><USER2> People who focus on color profile support in a world where all colors are compressed to 8 bits per channel with a nonlinear gamma curve are obsessing about the wrong problems. I notice banding artifacts (caused by quantization to 8 bits) and blending issues (caused by linear blending of nonlinear values) _way_ more often than I notice anything related to color gamuts.

People who care about color should be pushing to change the default color representation to a linear format with 16 bits per channel rather than making marginal changes to the edges of 8 bits per channel gamma compressed representations.

That has to start with the addition of 16 bit floating point format support to various hardware. It's really a crying shame that so little hardware supports 16 bit floating point. In addition to imaging it would be useful for audio, and deep learning too.

<comment><USER3> Exactly. The Wide Gamut is simply a selling point to have "vivid" colors. But most of the images including UI are still sRGB. Showing them on a 24-bit wide- gamut display means every color component is mapped to only a subset of 0-255 values. That will lead to a more noticeable banding than viewing the same image on an sRGB display [1].

The aforementioned DCI-P3 even have a higher gamma value of 2.6. Currently, almost all design compositions are done in the gamma compressed space, and the incorrect AA [2] and blending will be even worse on those devices.

Another thing is that most of displays are not even calibrated properly. Not even speaking about technical characteristics of the screens.

[1] [https://twitter.com/vmdanilov/status/745321798309412865](https://twitter.com/vmdanilov/status/745321798309412865) [2] [https://twitter.com/vmdanilov/status/712327571116056576](https://twitter.com/vmdanilov/status/712327571116056576)

<comment><USER4> _The Wide Gamut is simply a selling point to have "vivid" colors. But most of the images including UI are still sRGB. Showing them on a 24-bit wide-gamut display means every color component is mapped to only a subset of 0-255 values._

Unless they're just being mapped directly, which would probably make everything automatically look much more vivid... and that would help sell those displays too.

<comment><USER3> But some of these values have to be reserved for those extra colors in the wide gamut colorspace. And sRGB just fits in that range. That's why to truly take advantage of the wide gamut, the whole rendering process from a software through a GPU to an output device has to be at least 10 bits per channel (relying on what's being widely adopted). Otherwise, customers will be missing out with almost all available content.

</comment></comment></comment></comment><comment><USER4> _Here's another example, this time with a generated image. To users on an sRGB display there is a uniform red square below. However, it's a bit of a trick. There are actually two different shades of red in that image, one of which is only distinct on wide-gamut displays. On such a display you'll see a faint WebKit logo inside the red square._

I can clearly see the logo and I'm using a Samsung LCD from 2003. The pixel values are significantly different; the background is 255,0,0 and the logo is 241,0,0. The rest of my hardware is 2009-vintage. Likewise, the two shoe examples look very slightly (not a whole lot, but it's noticeable) different.

 _On an sRGB display, you can't see the logo, because all the red values above 241 in Display P3 are beyond the highest red in sRGB, so the 241 red and the 255 red end up as the same color._

Seriously? 241 and 255 look _very_ different to me, and if I remember correctly, would have always looked different in all the 24-bit colour monitors I've used.

Edit: experimentation with my monitor a little more shows that I can just barely discern 252,0,0 from 255,0,0, but 253 and 254 look identical to 255. This probably depends on my colour perception too. Either way, I still doubt my monitor is "wide-gamut", so what's going on here?

<comment><USER5> I think your system is ignoring the color profile attached to the image. They wrote:

        Remember the red square with the faint WebKit logo?
        That was generated by creating an image in the Display
        P3 color space, filling it with 100% red, rgb(255, 0, 0),
        and then painting the logo in a slightly different red,
        rgb(241, 0, 0). On an sRGB display, you can't see the
        logo, because all the red values above 241 in Display P3
        are beyond the highest red in sRGB, so the 241 red and
        the 255 red end up as the same color.

But if your browser ignores color profiles, and many do, then the P3 -> sRGB conversion won't happen, and your sRGB monitor will be told to display some 241 red and some 255 red instead of all 255 red.

<comment><USER6> I have a retina display, use Firefox as default browser. In firefox I see the webkit logo, in Safari not. So it seems like Firefox has better color support than Safari? I would expect the opposite. How does this work?

<comment><USER7> To the best of my knowledge, the only Apple devices with wide-gamut displays are the 2015 iMac and the 2016 9.7" iPad Pro. So I'd suspect that Firefox is either ignoring the color profiles, or handling them differently than Safari.

<comment><USER8> To be fair, on my 2013 rMPB, the Shoes one does not show a single difference whereas the Iceland, Italy, Sunset and Flower ones are much more vibrant and indicate that a wider gamut than sRGB may be available, but certainly not as much as the latest display.

<comment><USER9> I have an iPad Pro 9.7, and the color differences are very noticeable, especially in the wider variation of grass colors in the shoe image.

</comment></comment></comment></comment></comment></comment><comment><USER10> This reminds me of a demo page from the late 90s that made me appreciate graphic formats on the web, where it highlighted what true alpha transparency could really accomplish and what you miss out on when you don't have it [http://www.libpng.org/pub/png/pngs- img.html](http://www.libpng.org/pub/png/pngs-img.html)

Beyond just the topic at hand, this is a wonderful example of showing people how much more the web can do and why it is important that we keep pushing for progress.

<comment><USER11> > _If the images have obvious rectangular borders (due to the color specified > in the bKGD chunk), the browser is broken._

Well, Chrome is still broken for some of these images on Linux. Not surprising though, it also screws up resizing images:

[http://www.4p8.com/eric.brasseur/gamma.html](http://www.4p8.com/eric.brasseur/gamma.html)

I with they would fix these things before worrying about wide gamut

</comment></comment><comment><USER12> On the matter of improving colors, it would also be nice if browsers played nice with colorspaces (Rec.601/Rec.709) when dealing with YUV to RGB conversion in HTML5 video. Right now all browsers I've tested straight up ignore colorspace tagging in H.264 video and have some other issues too. I have a little thing you can use to see this for yourself: [http://daiz.io/yuv- to-rgb-in-html5-video/](http://daiz.io/yuv-to-rgb-in-html5-video/)

Basically, if the Result doesn't match up with Expected, the browser is doing it wrong. Ideally browsers should handle YUV colorspaces like so:

H.264 video - look for colorspace tagging in the video by default and use it if available, otherwise fall back to guessing based on resolution. SD video (up to 1024x576) should be converted with Rec.601, HD video (width >1024 or height >576) with Rec.709.

VP8 video - VP8 is defined as Rec.601 only, so always use it.

Theora - Same as VP8.

How browsers actually fare today (tested on Windows 10):

IE11/Edge - Always assumes Rec.601 for H.264 video. Doesn't support VP8/Theora.

Chrome - No colorspace tagging support for H.264. Converts HD video with Rec.709, SD video with Rec.601. 1024x576 is treated as HD already. VP8 is always converted with Rec.601 as it should. Theora gets Rec.601 in SD but incorrectly uses Rec.709 in HD.

Firefox - No colorspace tagging support for H.264. HD uses Rec.709, SD uses Rec.601, 1024x576 treated as HD like in Chrome. VP8 and Theora both always use Rec.601 as they should.

The unfortunate conclusion from this is that color accuracy is pretty much a crapshoot when dealing with HD video on the web. The only way to guarantee accurate results right now would be to convert your video to Rec.601 (if you're mastering HD video chances are you're using Rec.709 by default), serve VP8 video by default and have a Rec.601 H.264 fallback for IE/Edge (I haven't tested how Flash video playback handles this matter so you might also need a Rec.709 H.264 fallback for that).

<comment><USER13> The IE11 result makes me weep here, given the popularity of it - thanks for doing these tests. The amount of work we put into maintaining correct colour through the production chain seems increasingly wasted...

FYI I tested Safari 9.1.1 (11601.6.17) and it failed on a whole bunch of the tests, including, frighteningly, the untagged HD 709 H264 :(

</comment></comment><comment><USER14> One thing I've noticed is that Chrome and Safari have a visible difference in color management. Try opening [0] (<style> body { background-color: rgb(88,174,235); } </style>) in both browsers side-by-side, for example.

[0]: data:text/html;charset=utf-8;base64,PHN0eWxlPiBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDg4LDE3NCwyMzUpOyB9IDwvc3R5bGU+

<comment><USER15> On my Mac they look the same. [https://www.evernote.com/l/AAG4fivAqoxHTb61wKDTesbMbR- OWtXd3...](https://www.evernote.com/l/AAG4fivAqoxHTb61wKDTesbMbR-OWtXd31o)

<comment><USER14> FF and Chrome look the same to me as well. Safari looks different.

<comment><USER16> FF and Chrome are both broken w/r/t color management.

<comment><USER17> [http://www.gballard.net/firefox/](http://www.gballard.net/firefox/)

Edge & Firefox support color management; though for best results in firefox you'll want to toggle [http://kb.mozillazine.org/Gfx.color_management.mode](http://kb.mozillazine.org/Gfx.color_management.mode) to 1 - the default is 2, which is Not Good. Edge works out of the box.

</comment></comment></comment></comment></comment><comment><USER18> It's worth mentioning that Apple only introduced 10bit per color support since OSX El Capitan[0] and with the iPad Pro while wide-gamut monitors, both professional and prosumer ones, have been around for years now.

[0]: [http://www.cultofmac.com/395028/apple-quietly- added-10-bit-c...](http://www.cultofmac.com/395028/apple-quietly-added-10-bit- color-support-for-new-5k-imac/)

<comment><USER19> Very interesting. Just to clarify, am I right in saying that 10-bit colour just provides more precise colours within the sRGB gamut? 10-bit colour does not extend the colour gamut in anyway?

<comment><USER13> Correct! But for wider gamuts (and higher-contrast displays), the benefit becomes more obvious in the lack of banding.

</comment></comment></comment><comment><USER20> This whole situation is rather nasty. There was enough of consternation going from NTSC ("never-the-same-color") to digital, with the bifurcation/trifurcation of SMPTE 240M, BT.601 and BT.709, plus the bifucation of "legal" versus "PC" color ranges for all of the foregoing (thanks, Microsoft). I've seen VERY few pieces of software (and even broadcast hardware) that get even just THAT complication all sorted, and even less people who really know what they're doing operating the systems and software tools involved. Now, we're adding BT.2020, SMPTE 2084, Dolby Vision, and all sorts of proprietary stuff like Sony S-LAB. This is going to be a disaster -- nothing will properly talk to each other, e.g. cameras, encoders, video displays/monitors. Everyone can't even agree whether 10-bit is enough or whether we really need 12-bit for accurate reproduction. SMPTE and ISO just punted the question down the road by saying you can have any flavor of ice cream you want. I predict fun times ahead at next year's NAB...

</comment><comment><USER21> Wide gamut is not enough, we also need HDR (that is Rec 2020 color space with Perceptual Quantizer). This will allow to show much brighter (and darker) colors.

</comment><comment><USER22> I have bugs for this on webkit outside for... 4 years and counting. To the point I got so frustrated I wrote my own rant on gamuts and color spaces over on [https://pomax.github.io/1436836360570/we-are-really- terrible...](https://pomax.github.io/1436836360570/we-are-really-terrible-at- digital-colours-and-digital-photography) \- seeing someone finally acknowledge this on the actual webkit blog is heartening. Maybe things _can_ change.

</comment><comment><USER23> Firefox, Ubuntu 16.04, HP Zbook 15 (G1) with a 1080p display (not the DreamColor one). I do see the differences in all the images with the exception of Shoes, Flowers and Rose. I remember that Ubuntu installed a color profile but I don't know if it's calibrated for my screen. Nice to know that I have an above average display.

</comment><comment><USER6> I have a retina screen, but see no difference with the ProFoto images in the demos. The AdobeRGB images show a difference and improvement. It's a pity that the demo with the sliders results in flickering, which makes it useless.

<comment><USER24> Retina only refers to resolution. Color representation is a deeper "qualitative" feature of the display. Currently I am only familiar with Apple's retina iMac which would be able to _correctly_ display their examples.

<comment><USER25> The 9.7" iPad Pro also has a P3 display if I'm not mistaken.</comment></comment></comment>


Show HN: New job board for ruby on rails developers in the UK – feedback wanted - <AUTHOR> http://www.railsjobs.co.uk <comment><USER2> It looks good, however I think you are 5 years too late with this project.

<comment><AUTHOR> Thanks for your feedback, why 5 years too late?

<comment><USER2> I have absolutely nothing against Ruby but it seems that in general people already think that it's not hip so very little new projects are being made with it. Node is the new "hip" thing currently, not Ruby.</comment></comment></comment>


Applying NASA coding standards to JavaScript - <AUTHOR> http://pixelscommander.com/en/javascript/nasa-coding-standarts-for-javascript-performance/ <comment><USER2> Whenever somebody does an analysis of coding standards like this (see also the JSF coding standards) they always lock in on how these rules are written to enforce "correctness", but they frequently gloss over an extremely important part of what it means to be correct in a complex control system like a jet fighter or a space craft, and that is deterministic execution.

"Correct" execution doesn't just mean error free, but it also means that code needs to execute deterministically both in terms of near-complete referential transparency as well as execution time. This is what is referred to as "real time computing" in CS, a term that has recently been made homonymous by UI/UX/front-end designers to describe responsiveness in high-latency systems like the web.

All of the inferences about how these rules aid static analyzers are good and correct, but a lot of these rules are also important to achieving deterministic execution time; memory management being the big one due to its complete lack of determinism both in computation result and computation time. Sticking code in a real-time OS doesn't really matter unless the code itself is also real-time kosher.

I don't bring this up to gripe, but only bring it up because it wasn't something I was familiar with until I started working on torque controlled walking robots a few years ago where the feedback loop has a real-time constraint, and it has since taken over my life and I find it to be a very fascinating aspect of computer science that almost nobody ever talks about. Achieving real-time deadlines in a program can be quite challenging and very often making something "faster" than its deadline is not even close to the same thing as making sure it _always_ makes its deadline. It really changes the way you think about performance, execution time, program optimization, etc.

<comment><USER3> Could you go into more detail on where I could learn more about this / where I could work on such types of systems? (outside of high frequency trading)?

I've started working on similar types of technology recently, but purely by wandering into it by accident.

<comment><USER2> I don't really know of any good general resources; they're often pegged to a specific programming language because the ways in which you have to achieve real-time compatibility differ depending on how the language and its runtime behave. We do all of our work in Java, which is definitely not a great candidate for real-time in most cases, so a lot of what I've learned about real-time programming has come from having to wrangle the JVM in to doing what we need it to do.

The fields that come to mind when I think of real-time outside of HFT, though, are control systems and digital signal processing (DSP). While DSP doesn't necessarily need to be real-time if you're doing it for analysis, doing DSP live definitely requires real-time programming knowledge since signals are often expressed in the time domain and any delay in computation of a discrete element will propagate in how the signal is interpreted. For example, if the signal you're processing is a sound signal (like music), and you are doing software-based DSP on the signal before it reaches the playback device, it better be real-time or any delay spikes will ruin the playback. This is why OS X is so popular with the music industry and especially DJ's; the Mach kernel has really good real-time support and a pretty good real-time software based DSP library for building apps.

<comment><USER4> You might be interested that Aicas is driving the new real time specification for Java.

[https://oracleus.activeevents.com/2014/connect/fileDownload/...](https://oracleus.activeevents.com/2014/connect/fileDownload/session/4ACE36ED8A7AF1923F15B9941F35BB25/BOF4957_Hunt- javaone-rtsj-bof-2014.pdf)

<comment><USER2> We have some contacts at Aicas, and we've used both the original RTSJ in the past as well as evaluating Jamaica. Myself and a colleague recently attended JTRES and spoke to Dr. Hunt about where Aicas fell short for our specific use case, and in the very near term it won't be usable for us. We're looking in to re-evaluating it around summertime.

</comment></comment></comment></comment></comment><comment><USER5> "but what is wrong with recursion? Why NASA guidelines prescribe to avoid simple technique we were studying as early as in school? The reason for that is static code analyzers NASA use to reduce the chance for error. Recursions make code less predictable for them. JavaScript tools do not have such a precept so what we can take out of this rule?"

This is of course, wrong. Javascript has not solved the problem of making recursion easy or sane to analyze. It is quite literally the same problem you have with C.

In fact, most javascript tools are _way_ less useful at recursion analysis (IE they produce a much higher rate of false positives) than C tools.

"9.The use of pointers should be restricted. Specifically, no more than one level of dereferencing is allowed. Function pointers are not permitted.

This is the rule JavaScript developer can not get anything from. "

Except that javascript developers use function pointers like they were going out of style ...

<comment><USER6> I suspect issue isn't that recursion is hard to analyze, but that non-tail- call-optimized recursion has unbounded memory usage.

In fact, what makes you say that recursion is difficult to analyze? Inductive proofs over recursive algorithms are generally much nicer than proofs over iterative algorithms.

<comment><USER7> You nailed it. Tail calls have constant memory footprints, non-tail-call recursion (assuming the language runtime and/or compiler are able to recognize these situations and convert the tailcall into an adjustment of the variables in scope in the current stack frame followed by a jump).

If we'd be worried about our ability to analyze these then we wouldn't be able to optimize away that special case to begin with.

I do find that to my imperatively trained eyes it always screams 'stack overflow' at me and then I have to remind myself that will be optimized away.

It'd be nice if environments that provide tail call optimizations could be set to fail compilation if any non-tail-call recursion is detected.

<comment><USER5> "If we'd be worried about our ability to analyze these then we wouldn't be able to optimize away that special case to begin with. "

Most compilers require you tell them, specifically, that it can tail call everything, before it will do it (i'm talking more about GCC and LLVM here, which are generic compiler frameworks). It will do some tail call optimization, but only fairly basic cases, exactly because it can't analyze what will happen.

</comment></comment></comment></comment><comment><USER8> "Why NASA guidelines prescribe to avoid simple technique we were studying as early as in school?"

Because recursion in the languages they are using involves allocating stack frames for the recursion, which means they can't predict stack depth, which means they can't predict the amount of memory the stack will consume, which means they may run out of memory, which means their spaceship may be destroyed.

Which, incidentally, here on step two indicates why the NASA standards are from _such_ a different world from the web browser that they don't much matter. Now, I'm not saying that memory use doesn't matter, just go nuts, but JS is generally running in an environment with wildly more memory than those restrictions were meant for (yes, even on cell phones nowadays), and generally you're looking at "annoying a user and they go away" being the worst case rather than "losing a billion-dollar spacecraft".

JS is not even capable of following #3 about memory allocation.

NASA: "6\. Data objects must be declared at the smallest possible level of scope."

Commentary: "This rule have simple intention behind – to keep data in private scope and avoid unauthorized access. Sounds generic, smart and easy to follow."

No, that's not what that rule is for. By keeping the data objects at the smallest possible scope level, it makes it as likely as possible that it can be stack-allocated, which means the lifetime of the object can be easily understood, guaranteed not to proliferate due to a leak (see rule about not recursing), etc. Again, this has little to do with a language that decides for you whether it will stack or heap allocate.

#8, again, has nothing to do with Javascript.

"When started to write this article I could not imagine how much web world could get from NASA and how much is similar."

No, it really isn't. Unfortunately, and I don't know how to effectively soften this, you don't understand enough about their world to understand what the rules are for, so you brought your own conceptions about JS to what the rules were saying. In fact they're _really_ specific to a certain type of resource- restricted real-time programming that has very little to do with a web browser, and which you could not follow with JS even if you somehow wanted to, and for those you could, the cost/benefit tradeoff for following NASA's suggestions are awful. If you're interested in improving your JS quality, focus on more extensive automated testing, focus on more profiling, and focus on general software engineering principles like single-responsibility and DRY. Don't even worry about these rules.

<comment><USER9> I really agree with you jerf.

> Because recursion in the languages they are using involves allocating stack > frames for the recursion, which means they can't predict stack depth, which > means they can't predict the amount of memory the stack will consume, which > means they may run out of memory, which means their spaceship may be > destroyed.

Thank you. It is trivial to turn a recursive function into a loop. Trivial especially compared to running through all the stack space (1MB on Windows) and crashing the process in some runtime environments[1]. Or your space ship. Either way: recursion belongs in academics. I don't care if you are using JS or ASM, learn how to avoid using it.

> Manage your variables with respect. Regularize variables declaration by > putting them in the top of scope

That really _isn 't_ what is meant by "Do not use dynamic memory allocation after initialization." Memory is allocated on the stack the second you enter the frame, no matter where you declare the variable. That is a style recommendation.

> JS is not even capable of following #3 about memory allocation.

Not to mention that the wrong definition of a GC is used.

[1]: [http://stackoverflow.com/questions/107735/stackoverflowexcep...](http://stackoverflow.com/questions/107735/stackoverflowexception- in-net)

<comment><USER10> > I don't care if you are using JS or ASM, learn how to avoid using it.

It's a bad idea for a class of languages. Functional languages implementing TCO are a different kettle of fish (especially if your function is tail- recursive). It's an extremely common pattern in these languages.

<comment><USER9> Indeed, however, understanding why it's a bad idea in imperative languages is important when using functional languages. You have to know how what qualifies a function as tail-recursive (and why that is important). You'll only learn that from experience with both classes of languages and most importantly, getting burned due to abusing the stack.

I'd rather people learn from the other direction, you know? I'm not sure how that would be implemented, but I see recursion abuse far too often and few seem to understand how that could be a bad thing.

</comment></comment></comment></comment><comment><USER11> The coding standard is one of six parts of Dr. Holzmann's formula for building robust software.

You can read more about Dr. Holzmann and the other 5 parts at "Making robust software" [http://www.verticalsysadmin.com/making_robust_software](http://www.verticalsysadmin.com/making_robust_software), my notes on Dr. Holzmann's "Mars Code" talk at USENIX HotDep '12 mini-conf (full video of talk: [https://www.usenix.org/conference/hotdep12/workshop- program/...](https://www.usenix.org/conference/hotdep12/workshop- program/presentation/holzmann))

</comment><comment><USER12> This article is almost blogspam, poorly written, very little content. The linked PDF is far more interesting.

<comment><AUTHOR> Any help on making text better is appreciated. Blogspam... May be, but consider that PDF were published a long time ago and not that many Web people were interested until there came a way to use it in everyday practice.

<comment><USER9> I can tell you put a lot of effort into the article. Heck, it got a decent amount of upvotes - which is a good thing. Thing is, there are a few veterans hanging around here. They're really don't take factual errors lightly. I have had my run-ins with them too.

Your first mistake?

> web people

You are not web people. You are a developer. Broaden your horizons and stop restricting your experience to the microcosm that is JS and the web in general. Once you do that you'll start to understand why the folks here have some issues with some of the suggestions you put forward.

</comment></comment></comment><comment><USER13> Can somebody please fix the glaring typo in the title: s/standarts/standards/?

No point in duplicating OP's errors here, in my opinion.

<comment><AUTHOR> Done, thanks. Please, let me know if there are more typos / stylistic issues.

<comment><USER14> s/autmatization/automation

</comment></comment></comment><comment><USER15> Avoiding dynamic memory allocation and recursion are typical rules for embedded scenarios, where programs run in safety critical contexts on tiny microcontrollers. These rules are not for easy static analyzation but for having a deterministic memory usage. In the best case one where you can proof that your application will in no state exceed the available memory. Similar rules are also enforced in automotive scenarios.

Allowing recursion allows to blow the stack. Allowing malloc/free might blow the heap. Even when it does not do it immediatly it might do it over time due to heap fragmentation.

</comment><comment><USER16> A 60 line limit for functions sounds way over-generous to me.

<comment><USER10> Really depends on your language. Also, I find (though rarely) that it sometimes help to keep most of the pieces of a given algorithm in the same place rather than splitting it in small functions.

</comment></comment><comment><USER17> I really like this. I especially like how the author(s?) didn't make the Assertions -> Unit Tests leap. Assertions are much more powerful, even if they aren't executed in production.

I feel like a few of these are glossed over. #7 implies that error conditions should be handled. #8 precludes transcompilers since they are also just glorified preprocessors. #10 means use "use strict"

<comment><USER18> yeah I agree #8 in particular should elicit a lot more debate in the js community. Back when I used to be into RoR I would get a ton of flack in interviews for writing pure js rather than Coffeescript, pure css rather than Sass.

There are legitimate cases where a pre-processor is useful (Coffeescript demos show several cases where a lot of code can be simplified) but unless you are writing a math/list-heavy app, I feel these advantages don't apply so much. I don't perceive a need for these tools in most projects that are about dom manipulation, it can instead be achieved through pure libs (jQuery) which will eliminate a build step and should allow for some easier testing.

This is a fundamental programming debate that I don't see a lot of discussion of... since I like CLojure I see some talk of how "transparent" it is as a wrapper over JVM types but a lot of the pre-processor style of transcompilers gloss over this idea (I guess just preferring 2 independent stages of static/lint analysis?).

<comment><USER17> Firstly, I don't pool LESS/SASS with Coffescript and the like because CSS is a content description language, not a programming language, though as someone who is an expert on none of the above, I would hear arguments against them.

Secondly, most people wouldn't. If someone is using Coffeescript they don't want to hear that they shouldn't be using Coffeescript because they want to use Coffeescript, and most people (and in 2014 "most programmers" are a microcosm of "most people") don't like listening to opinions that deviate from their own. All of the "great" parts of Coffeescript can be implemented in JavaScript with a library like underscore.

Clojure is a bit different since it is interacting directly with the JVM.

<comment><USER18> good points, but yeah the reason i lump them together (even though I agree that C preprocessors vs. css vs. js vs. jvm abstraction are obviously very different technologies) is that in the context of this discussion, i see them as a layer of abstraction that basically mangles the ability for code analysis (whether it be static or in debugging) to happen in a way that feels comprehensive

for some technologies this is being alleviated with source maps, but it still feels like over-complication when there are library alternatives available (Underscore, as you point out). Because when it comes down to it you will need to debug & understand some language paradigms/quirks of the language you are transcompiling to, so it would behoove the developer to be as fluent in the target language as possible (& of course, coding natively in it to begin with promotes fluency...)

as the tools become stronger the danger disappears, yet the base language has simultaneously matured to the point where this extra technology may be nearing obsolescence... i understand in js there is some lag with web standards boards etc., but taking Java as an example, annotations and other language functions were added while simultaneously the libraries/containers (web frameworks, Spring, EE) got more powerful. It is a pretty strong & mature toolset probably mainly due to the language evolution always being forced back toward the core.

From the limited amount I know, the other JVM languages are implemented against the JVM spec which is matured in a similar way, thus facilitating easier implementation of language features & interoperability.

</comment></comment></comment></comment><comment><USER19> > All loops must have a fixed upper-bound.

This was done by default in QuakeC (a pretty great DSL I think). I was amazed the first time I made an infinite loop and it detected it. (It stopped after a large number of iterations, maybe 10000).

</comment><comment><USER20> "9.The use of pointers should be restricted. Specifically, no more than one level of dereferencing is allowed. Function pointers are not permitted."

I disagree that JS developers can't get anything out of this. The rule clearly states that first-class functions (function pointers in C) should not be used. Whether that's a good or bad idea to follow is another matter, but the author's interpretation that it doesn't apply to JS is wrong. IMO, it's likely to reduce complexity and bugs quite a bit so it seems like the rule should be generally followed if one follows the rest of the rules, despite giving up such a powerful and flexible feature.

<comment><USER21> Totally agree on this point.

My feeling is that Rule 9 roughly maps to following the Law of Demeter in that you shouldn't chase properties down more than one level, e.g.

Good:

       var something = obj.property;

Bad:

       var something = obj.property1.property2.property3;

<comment><USER22> Once again this has more to do with the idea that everything must be deterministic. Using a pointer when it's not absolutely needed is just one more place where a non-deterministic runtime issue can crop up.</comment></comment></comment>


When tissue is pronounced "Kleenex", you have a problem. - <AUTHOR> http://en.wikipedia.org/wiki/Genericized_trademark When tissue is pronounced "Kleenex", you have a problem. <comment><USER2> What's the relevance?

<comment><USER3> Don't use a generic term to name your startup? Trademark your company name?

<comment><AUTHOR> A lot of people talk about branding, and genericide is an interesting take on it.</comment></comment></comment>


LIGO Detected 'Unknown or Unanticipated' Burst of Gravitational Waves - <AUTHOR> https://twitter.com/aussiastronomer/status/1216939049006428160 <comment><AUTHOR> Some context from an astronomer:

> we literally ran outside to check Betelgeuse was still there

[https://www.reddit.com/r/space/comments/eolw8l/ligo_just_det...](https://www.reddit.com/r/space/comments/eolw8l/ligo_just_detected_an_unknown_or_unanticipated/fedor9z/)</comment>


Need Feedback: Mobile Application for Collecting Augmented Reality Vouchers - <AUTHOR> Hi Hacker News, Im thinking about an idea for a mobile application and I wanted your advice. Here is what is does: You can collect and share a Voucher or Coupon, that is positioned in front of a Retail Store. The Design is in 3D in an Augmented Reality Interface, like in PokemonGo. A fun way to get people in offline Stores with Gamification.<p>What do you think? Is it feasible? Would you use a App like this? <comment><USER2> Curious if HN'ers are the target demographic. If not, who is?

</comment><comment><AUTHOR> Sorry but what does HN stands for?´</comment>


You can't detox your body - <AUTHOR> http://www.theguardian.com/lifeandstyle/2014/dec/05/detox-myth-health-diet-science-ignorance

<comment><USER2> This is a duplicate of [https://news.ycombinator.com/item?id=8706700](https://news.ycombinator.com/item?id=8706700) .</comment>


MSDN: Mary Jane Grows Up - <AUTHOR> https://msdn.microsoft.com/en-us/magazine/mt763241.aspx <comment><AUTHOR> It would be easy to dismiss this as just some guy's blog that happens to get published on MSDN, but it was published in the MSDN paper magazine too.

I do find the terminology interesting. He calls it "weed", but in my experience it's the much younger generation who call it that. Us oldsters seem to call it "pot", or sometimes a term I coined back in the day: "programmer's fuel."</comment>