Peter Thiel Explains Biotech Investing Rationale: Get Rid of Randomness - <AUTHOR> http://www.technologyreview.com/news/541226/peter-thiel-explains-biotech-investing-rationale-get-rid-of-randomness/ <comment><USER2> There is another incredibly interesting meta-discussion implicit in that article. How does someone very intelligent like Peter Thiel make investment decisions in an area where he lacks a huge amount of background knowledge?

He can obviously evaluate the team, he can ask experts he trusts to give him their opinion about the value of the approach, but... biotech start ups, far more than software start ups, live or die by the strength of their technology. Transplants have far fewer false positives than working with cell lines (especially HeLa!) - but they are also several orders of magnitude more expensive. Is the trade off between decreasing false positives versus increase in experiment costs worth it? That company obviously think so, but it's not a no brainer, and it's very difficult to seriously evaluate. Mice models are very expensive - and they are better than HeLa, but they aren't foolproof. In cancer biology, there's a continuum between how expensive a technique is, and how much it recapitulates the actual biology of the disease. The sweet spot also varies hugely from disease to disease.

Another point which I find fascinating, is that more or less everyone who has worked on cancer biology knows that HeLa are not really a realistic model... yet people keep using them, why? Because a lot of researchers are interested in publishing papers in prestigious journals, not discovering robust findings. A pharma company instead has a lot more incentive in getting things right - because a splashy result that gets falsified at phase 1 is an incredibly expensive failure, while it's still a Nature paper for a professor. I don't think that academia should exist to serve pharma companies, but the problem of false positives is very real, and all the incentives around the publishing/grant system make it much worse. We should be rewarding researchers that get moderate but robust results that hold up under scrutiny, not people who make incredibly splashy discoveries that later turn out to be incredibly narrow and difficult to reproduce.

<comment><USER3> There are no completely accurate tumor models. The best a tumor model can do for a group is provide a standardized disease progression to test against.

This is why in mouse tumor models there are a lot of highly aggressive tumor models that are meant to rapidly kill the host-- if you can show even a 5% reduction in tumor size or 5% longer life of the mouse, it's impressive.

</comment></comment><comment><USER4> I'm not the biggest fan of Thiel's thinking, but this line shows that the two founders did their job very well:

>They convinced me there is a surprising amount that has gone wrong with the cancer cell lines people have been studying

This sounds that they managed to explain to him how much is going wrong with HeLa cells (I assume he's talking about HeLa - these are the most widely used).

They're so sturdy that they contaminate everything to the point that some well-known, well-used cancer cell lines turn out to be nothing but HeLa contamination [1]. There's ethical problems as the original cells were taken from Henrietta Lacks without her consent (this is slowly being rectified, have a look at "The Immortal Life Of Henrietta Lacks"). HeLa cells have mutated so much in culture that they have little in common with human cells [2]. I wonder which "human cancer" cells they graft into mice.

All together, this sounds like the founders did their homework on science communication. To scientists this highlights the importance of communication - it's not "just" useful for talking to "the public about the importance of your work", it can make you some serious money!

[1] [http://retractionwatch.com/2013/03/11/more-hela-problems- for...](http://retractionwatch.com/2013/03/11/more-hela-problems-for-decades- a-widely-used-bladder-cancer-line-hasnt-been-what-scientists-thought/)

[2] [http://blogs.biomedcentral.com/on- biology/2013/09/17/debatin...](http://blogs.biomedcentral.com/on- biology/2013/09/17/debating-the-hela-cell-controversy-karyotype-defined-cell- line-identity-and-the-privacy-of-patients-2/)

<comment><USER5> The fact that they managed to convince Mr. Thiel that they have a unique approach indicates as much about his lack of education in biology as it does their ability to communicate.

The problems with modeling human disease using "found" cancer cell lines (of which HeLa is just one of hundreds) have been widely-understood for well more than a decade. These cells have absurd, fragmented genomes with bizarre and variable chromosomal copy numbers. They have lived in culture for sometimes many decades, under strange evolutionary pressures. They provide models in which we can explore human-like cells and regulatory pathways, but it is well- acknowledged in the field that these are not sufficient to model a generic form of cancer, much less a particular patient's cancer.

Thiel is approaching biotech with the same blindness with which older investors approached investment in datatech during the dot-com bubble. There is no more reason to believe that this startup will corner the market on xenograft-based research into cancer therapeutics than there was to believe that pets.com would become the be-all and end-all of everything pet related online. But this comes back to your point, that the founders have done a fantastic job of communication. I hope they are communicating the truth, and not just their dream. It will be a big fall if it is the latter.

<comment><USER4> As the article is a bit short on details we can only grasp at what they exactly do different - maybe they're not doing anything unique, maybe he's just impressed with how they're using "known" methods to minimize risks/randomness.

I really can't tell from the text what kind of cells they use and how random these are, or how novel their method is (if it is even novel).

</comment></comment></comment><comment><USER6> > technology is trying to overcome the randomness that is nature

This is a major reason why consumer electronics and information technology have enabled so many more rapidly scalable businesses in recent decades than other industries (hence "We wanted flying cars, instead we got 140 characters").

The technology industry is uniquely founded on physical phenomena that are deterministic, even at high speed or recursive complexity (CPUs, storage, networking, displays, peripherals, etc). Therefore, if you can think of something in a mathematical fashion, you know that it can be built. This essentially eliminates technical feasibility risk - rather than worrying about _whether_ a product can be built, you can focus on _what_ should be built and _why_.

<comment><USER7> Well, CPUs don't grow on trees. We got to the point of predictability through the same rocky, unpredictable process of eliminating randomness (a.k.a. science).

<comment><USER6> I don't mean the fabrication of those components, I mean their operation.

In living organisms, eliminating randomness in their operation would change their intended behavior in several ways - randomness is a feature, not a bug, in living organisms.

</comment></comment></comment><comment><USER8> Even with using xenografts instead of cell lines there's plenty of stuff that can go wrong. Animal models are maybe closer to humans than cell lines, but they're still far from perfect.

Derek Lowe posted about this a few days ago on his In The Pipeline blog:

 _But their rationale is that trying to culture CSCs in vitro runs the risk of having them change character too much, making any assays using them unreliable. My guess is that they're right about that, but my worry is that xenograft tumors themselves are already unreliable enough to cause trouble (and I have no idea of what happens to them after you "passage" them through multiple animals). Xenograft models are, of course, well known in oncology drug discovery, but one of the things that's well known about them is that they're the pure example of "necessary but nowhere near sufficient"._

[http://blogs.sciencemag.org/pipeline/archives/2015/09/09/cha...](http://blogs.sciencemag.org/pipeline/archives/2015/09/09/chasing- cancer-stem-cells)

</comment><comment><USER9> >the randomness that I think of as the evil part of nature.

This is a perfect example of why Thiel's thinking is so unappealing to me. First of all, nature is not random, but there is a lack of understanding of the true implications of cause and effect of what goes on at a biological (and ecological) level that it may appear that way to people so captivated by the binary control of the programming world.

But, even if it were random, I don't think that's evil in the least. It's unpredictable, yes, but so are the implications of many of the technologies that Thiel embraces. That does not make those technologies inherently evil, just as "randomness" is not an evil part of nature.

I am afraid of the sterile world that Thiel seems to want.

Additionally, I'd like to point out this bit from a below comment where the poster responded to several article excerpts, including: "I think of aging and maybe just mortality as random things that go wrong. The older you get, the more random things happen, the more breaks. If it's not cancer, you could get hit by an asteroid. So on some level, technology is trying to overcome the randomness that is nature. That is a question on the level of a company. Can you get rid of randomness in building a company? But the philosophical version of the question is whether we can get rid of randomness in its entirety and overcome the randomness that I think of as the evil part of nature." Nature isn't random! Nature is complex, cryptic, self-referential, and chaotic, but it's deterministic at the level of biology. "Random things happening" is not a proper understanding of age-related decline; aging is the long-term compounding interest of metabolic byproducts. It really stuns me that Thiel's understanding of these things is so apathetic to reality.

</comment><comment><USER10> I find this a very inspiring line of thought for two reasons. 1) Philosophical. What if we could get rid of randomness in our lives? Can we do 'end-to-end' assembly with our health, owning all stages of the process, like Elon Musk does with Tesla Cars? And in the end, will this give you more happiness or more stress? 2) Business. Getting rid of randomness is important for the growth of our startup. This interview gets me thinking: what randomness can we cut out of our business?

<comment><USER11> If you take the idea of "getting rid of randomness" to its logical conclusion, it boils down to _making_ the world deterministic.

Does it make sense to pursue impossible goals? If not, does it make sense to philosophize about pursuing impossible goals?

<comment><USER12> It's basically just thermodynamics: if you're willing to spend enough energy, you can optimize the state an arbitrarily large system as you please.

Of course, the key words there are _enough energy_. It sounds like Thiel might be forgetting to account for what we want to optimize and how much effort we're willing to spend on it.

<comment><USER11> > _if you 're willing to spend enough energy, you can optimize the state an > arbitrarily large system as you please_

Define "optimize" and "system"?

<comment><USER12> "System" \-- any bloody thing you care about, any collection of mass and energy.

"Optimize" \-- to constrain the system to within a subset of its state-space. Or in other words, to make only some things happen rather than all other possible things.

Generally, as long as something is physically possible, you can spend some amount of energy to make it reasonably probable or unreasonably improbable. This may just be far more energy than you happen to have, or care to spend.

<comment><USER11> So how does the 'optimization' work? :)

I have no clue about physics, so I'm just curious.

<comment><USER12> It doesn't. It's really a deliberately vague term referring to any physical action designed to put the system in one state rather than another. A thermodynamically non-reversible action, you could say.

<comment><USER11> Alright. Well, we're talking about something that might be theoretically possible, but is impossible in practice. I don't think it matters.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> Biotech companies don't risk so much randomness because they like it that way. It's because without most of the randomness there is no possibility of breakthroughs.

Still, optimizing experiment design through a balancing of bayesian statistics, simulation and cost optimization may result in savings or less capital risk.

</comment><comment><USER3> Uhh, I think Thiel doesn't understand what is going on here. I am going to respond to a few excerpts.

"The question is, can you change those probabilities into different numbers? The reason we invested in Stemcentrx at a valuation that would have been higher than many other biotechs we looked at is that we felt the whole company was designed to get these probabilities as close to one as possible at every step, to get rid of as much of this randomness or contingency as possible. That is something that we found deeply reassuring."

Broadly speaking there are two strategies for drug research: shotgun, and sniper rifle. If we're being honest, shotgun is the dominant method specifically because 10 chances is far safer than 1 "really good" shot that may or may not produce a really good drug. The one shot wonder shops usually fail early stage when they can't produce a chain of positive data from one funding round to the next. Biotech startups are longshots-- I would say that they are probably even longer shots than a software shop specifically because there can be unknown physical constraints of biology that can silently ruin an otherwise great idea, leaving other people to make the exact same mistake repeatedly after you're gone. Reducing inconsistency of your results is a core of the scientific method, practiced everywhere, but doing so effectively is hard when you don't have full understanding of any one component you work with. It isn't random behavior, it's just not fully understood behavior.

"One of the very unusual things they do is graft human cancer into the mice. It's a somewhat more expensive way to do this than studying cancer in cell culture. It's a somewhat harder structure to build. But drugs tested this way are much more likely to work in humans. They convinced me there is a surprising amount that has gone wrong with the cancer cell lines people have been studying. "

Literally everyone who is serious about making oncology drugs does this technique. It's a staple. I guess it's "unusual" if you aren't accustomed to the methods of biotechnology, but rest assured, this trick has been well-known for quite a while-- it is not a magic bullet, but it's better than alternatives. Cancer cell lines are known to be poor models in a number of dimensions, which is great because we can anticipate their shortcomings. Mouse models also have shortcomings that are somewhat well understood, but don't confuse this for a slam dunk. There are still many (most?) cases in which drugs developed from mice won't transfer to humans.

"But if biotech companies tend to invest money in ways that are pseudo random, then a lot of it must get wasted. You end up doing things where you say, "I am not sure it's going to work." Well, that sounds like a wasteful thing to do. The standard excuse that biotech companies have is that, "We don't know if it's going to work, so we have to do it this way." That has to be inefficient."

Is this guy serious? You're never sure if it's going to work in the laboratory! Research is mostly "try something new, then try another new thing when that fails." It's "wasteful" because it's guided trial and error, and you don't have full totalitarian control over any of the variables. If you think you are investing in a new biotech company (or old, really) that has escaped this paradigm, I have a series of pyramids to sell you.

"This idea was very much in my mind by the time we invested in Stemcentrx in 2012. They had an annoyingly complicated problem, all these pieces you have to bring together, and they said, "We are just going to do it ourselves." That is a mind-set that I very deeply share. I don't want to name names, but there are other companies where, in some ways, this was the key thing that failed."

All biotech problems are annoyingly complicated, and the prerequisites for trying to solve problems are also annoyingly complicated. There are some extremely well funded companies that can do everything in house, but it's the wrong way to go about a startup-- even a lot of the larger biotechs contract stuff extensively. Why have problems with simple things that should work when you could contract them out and not worry? You can always bring that capability online in parallel in your own company at a later stage when you have more breathing room. It's a huge hassle to buy equipment, hire and train your own people to perform a task that someone else can do better and cheaper.

"The big picture is the question of whether biological science can be transformed into an information science. Can something that seems chaotic, fractal, and generally random be transformed into something more deterministic and more controlled?

"I think of aging and maybe just mortality as random things that go wrong. The older you get, the more random things happen, the more breaks. If it's not cancer, you could get hit by an asteroid. So on some level, technology is trying to overcome the randomness that is nature. That is a question on the level of a company. Can you get rid of randomness in building a company? But the philosophical version of the question is whether we can get rid of randomness in its entirety and overcome the randomness that I think of as the evil part of nature."

Nature isn't random! Nature is complex, cryptic, self-referential, and chaotic, but it's deterministic at the level of biology. "Random things happening" is not a proper understanding of age-related decline; aging is the long-term compounding interest of metabolic byproducts. It really stuns me that Thiel's understanding of these things is so apathetic to reality.

<comment><USER6> > You're never sure if it's going to work in the laboratory! Research is > mostly "try something new, then try another new thing when that fails." It's > "wasteful" because it's guided trial and error, and you don't have full > totalitarian control over any of the variables. If you think you are > investing in a new biotech company (or old, really) that has escaped this > paradigm, I have a series of pyramids to sell you.

This is an application of Thiel's philosophy of making contrarian bets. From his perspective, if you weren't incredulous about Stemcentrx in the way you are, then he would have made the mistake of investing in something incremental. Whether his contrarian bet turns out to be correct is something that remains to be seen.

> Nature isn't random! Nature is complex, cryptic, self-referential, and > chaotic, but it's deterministic at the level of biology.

I don't think this is exactly true. For example: [https://en.wikipedia.org/wiki/Cellular_noise](https://en.wikipedia.org/wiki/Cellular_noise)

There are certainly many seemingly random aspects of biology that are actually just a lack of understanding at the moment, but that doesn't mean there is no fundamentally random behavior in biological systems.

<comment><USER14> The concept you're looking for is Stocastic [1]. The distinction between being 'stocastic' and 'random' is one of 'unpredictable & determined' vs ' unpredictable & undetermined'. Cell biology deals with (and utilizes) a few stocastic processes, but that doesn't make those processes random. An interesting test to differentiate the two (at least in biology) is what happens when you run the simulation backwards - if the occurrence of an event is still unpredictable in reverse, then it's 'random', if every causal incident can be traced, it would generally be considered stochastic.

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

(edit to fix wording)

<comment><USER6> > The distinction between being 'stocastic' and 'random' is one of > 'predictability & determined' vs 'undetermined'.

The first sentence on the page you linked to suggests otherwise:

> The term stochastic occurs...to describe events or systems that are > _unpredictable_

<comment><USER14> Sorry, that was not a well-written wording. The intention was to demonstrate the concept of 'predictability' not whether it was actually predictable. Edited and fixed now.

<comment><USER6> > The distinction between being 'stocastic' and 'random' is one of > 'unpredictable & determined' vs ' unpredictable & undetermined'

Also from that page you linked:

> a purely stochastic system is one whose state is randomly determined...it > can be classified as non-deterministic (i.e., "random")

Also: [http://math.stackexchange.com/questions/114373/whats-the- dif...](http://math.stackexchange.com/questions/114373/whats-the-difference- between-stochastic-and-random)

> A variable is 'random'. A process is 'stochastic'. Apart from this > difference the two words are synonyms

<comment><USER14> Huh. It seems different scientific fields use the word 'stochastic' in very different ways.

The commenter, 'bgins' makes the point, "Random has many connotations (like entropy), not at all equivalent, and is a more generic term usable outside mathematics. Stochastic means nondeterministic or unpredictable. Random generally means unrecognizable, not adhering to a pattern. A random variable is also called a stochastic variable."

And user, 'Einnocent,' "Likewise, I've noticed that network theory tends to refer to traffic as being stochastic. Such traffic, from the point of view of a router, would be considered random, but of course each packet was deterministically produced."

In the biochemical field (of which I'm familiar, though ignorant of the others), I doubt anyone would say that gene expression is 'random', rather it is 'stochastic', and their intention in choosing those words distinctly would indicate that there are not just probabilistic, but physical limits to the expression of a gene that constrain its probability space. And further, there are generally deterministic (if unpredictable (though not entirely independent) from to state) mechanisms which ultimately lead to gene expression. Were I to say that the expression of gene A is 'random,' then it would seem to imply that there is some minute chance that the result is a billion copies of the gene, when physically, it might be impossible for the cell to exist with that many proteins in it - or that the state of gene expression at time t0 is entirely independent of expression at time t1, which is also untrue. Both of these interpretations of biological processes are misleading and wrong, though they are what is conjured when it is said that, "gene expression is random." All the while, the number of copies is actually dependent on knowable, measurable, if highly-noisy processes - what I've know to be termed 'stochastic'.

<comment><USER6> > Were I to say that the expression of gene A is 'random,' then it would seem > to imply that there is some minute chance that the result is a billion > copies of the gene

Not at all (in mathematical terms, anyway). You can certainly define the probability distribution of a random variable such that only certain values are possible. This is known as its support: [https://en.wikipedia.org/wiki/Support_(measure_theory)](https://en.wikipedia.org/wiki/Support_\(measure_theory\))</comment></comment></comment></comment></comment></comment></comment></comment>


China Is Allowing Taiwan to Attend Coronavirus WHO Meetings as Taiwan - <AUTHOR> https://www3.nhk.or.jp/nhkworld/en/news/20200209_23/amp.html <comment><USER2> This is not the original title, nor is the claim in the edited title even mentioned in the article.</comment>


Random Thing Generator - For all your mock data needs - <AUTHOR> http://www.randomthing.me/

<comment><USER2> Love tools like this, some quick feedback:

At least on Chrome, the contrast is really low, so much so that it looks hazy, almost as if something is still loading. The light pink background on white is pretty strenuous.

Is it possible to export the mock data, to a CSV or something? Most of the time when I use tools like this I'm just using it to seed a database or something in a toy app I'm playing with, so the ability to just grab a quick and dirty export of some mock data would be useful.

<comment><AUTHOR> Very cool idea. We'll definitely think about it. Thanks for the feedback!</comment></comment>


Ask HN: What's Your Best Shortcut? - <AUTHOR> <comment><USER2> a + space will google selected text. Use it 100's of times a day.

Defined with karabiner: [https://github.com/nikitavoloboev/dotfiles/blob/master/karab...](https://github.com/nikitavoloboev/dotfiles/blob/master/karabiner/karabiner.edn#L424)

The other ones would probably be app switching like w+k to open safari or w+l to open VS Code.

</comment><comment><USER3> Mod+Enter to open a terminal, sway/i3

</comment><comment><USER4> alt + s will prompt * Defined with autokey

</comment><comment><USER5> text replacement for ¯\\_(ツ)_/¯

<comment><AUTHOR> also have it for (ง'̀-'́)ง</comment></comment>


Show HN: Redbeard.io – A powerful native iOS development framework - <AUTHOR> http://www.redbeard.io <comment><AUTHOR> Further Q&A on our reddit thread

[https://www.reddit.com/r/iOSProgramming/comments/4tyhrr/redb...](https://www.reddit.com/r/iOSProgramming/comments/4tyhrr/redbeardio_a_powerful_native_ios_development/?st=iqxvb06c&sh=cef714d4)

</comment><comment><USER2> Anyone who has tried it in a real app before? Any experience tips?

<comment><USER3> Hey maxpert. One of the Co-founders here. I'll let others comment on how they found using the framework however we've been using it internally for client projects at our services company for a few years ([http://www.roundedlabs.com/#work](http://www.roundedlabs.com/#work)) We're also in the process of creating a set of complete end to end apps for which we'll be releasing the source code to. An example would be something like: [https://appsto.re/gb/ZiUPdb.i](https://appsto.re/gb/ZiUPdb.i) Feel free to drop me an email ansar [at] redbeard.io if you need help with anything. Ansar

</comment></comment><comment><USER4> Looks cool! What's your pricing model?

<comment><USER3> Thanks munirusman2. It's totally free. Always will be :)</comment></comment>


Uninstalling Facebook app saves up to 20% of Android battery life - <AUTHOR> http://www.theguardian.com/technology/2016/feb/01/uninstalling-facebook-app-saves-up-to-20-of-android-battery-life?CMP=Share_AndroidApp_reddit_is_fun <comment><USER2> This has been true for a long time now. I think the App never was actually good.

</comment><comment><USER3> Not exactly a conclusive study.</comment>


Report: No spying in Pa. school laptops case  - <AUTHOR> http://www.boston.com/business/technology/articles/2010/05/04/report_no_spying_in_pa_school_laptops_case/ <comment><USER2> "... according to a report issued Monday by attorneys hired by the district."

<comment><AUTHOR> They must have been hopped up on Mike and Ikes.

</comment></comment><comment><AUTHOR> 58k images!</comment>


"The only thing that stops a bad guy with a gun is a good guy with a gun" - <AUTHOR> http://www.nytimes.com/2012/12/22/us/nra-calls-for-armed-guards-at-schools.html?hp

<comment><USER2> The only thing that stops a bad guy with a gun is a _competent_ good guy with a gun.

An _incompetent_ good guy with a gun is either dead or indistinguishable from a bad guy.

</comment><comment><USER3> Other things that could stop a bad guy with a gun:

\- A bear

\- A good guy with a machete

\- The Black Death

\- Any number of ninjas

\- Old age

\- An absence of bullets

\- A military drone strike

\- A bad guy with a different gun

\- Bees?</comment>


Ask HN: What are the first 3 steps to make my startup idea a reality? - <AUTHOR>

Before the prototypes, MVPs and YC applications, what are the first basic steps a hacker should take to pursue their dream idea? <comment><USER2> Find the potential market of your idea - who are the people which will use it. Find a good team (designers + programmers + marketers). Execution is everything - don't wait around long; if you have a good idea, make a small working prototype asap.</comment>


Red Black Trees: Approximate best case binary search tree - <AUTHOR> http://www.eternallyconfuzzled.com/tuts/datastructures/jsw_tut_rbtree.aspx

<comment><USER2> If you like that, you'll really like this: <http://www.cs.princeton.edu/~rs/talks/LLRB/RedBlack.pdf>

Sedgewick's left-leaving red-black trees. Easier code to understand, same performance bounds. Beware, though, some of the code in the preso doesn't really work as claimed.</comment>


Twitter Bans Own CEO Jack Dorsey from Twitter - <AUTHOR> http://www.theregister.co.uk/2016/11/23/twitter_jack_dorsey_ban/ <comment><USER2> "just setting up my twttr…again (account suspension was an internal mistake)" \- @jack

[https://twitter.com/jack/status/801270269184647168](https://twitter.com/jack/status/801270269184647168)

Looks like nothing serious.</comment>


The this keyword (javascript) - <AUTHOR> http://www.quirksmode.org/js/this.html

<comment><USER2> All very true. A great follow-up would be an article discussing binding functions using Function.prototype.call or Function.prototype.apply.

</comment><comment><USER3> JS novice question: is it really a copy in the sense of a deep copy or is it a reference to the function that is bound to the object?</comment>


Russians now say new Antarctica bacteria actually contamination - <AUTHOR> http://science.nbcnews.com/_news/2013/03/11/17272571-russians-now-say-new-antarctica-bacteria-actually-contamination

<comment><USER2> From the article:

"The quick backtrack illustrates the danger of bypassing peer review when announcing new results, Peter Doran, an Arctic and Antarctic researcher at the University of Illinois at Chicago, told OurAmazingPlanet.

. . . .

"'You can say anything you want in a press release,' Doran said. 'The peer review literature (by contrast) is very controlled. It needs to be substantiated, and written in clear language.'"

Yep. That's the problem. There is a well known science news cycle

<http://www.phdcomics.com/comics.php?f=1174>

in which a researcher announces a preliminary result, but as a press release is compiled, the result is hyped up. Then credulous journalists who don't know much about science hype it some more.

My all-time favorite link to share in any Hacker News discussion of a speculative research finding like those posted here in the last few days is the article "Warning Signs in Experimental Design and Interpretation" by Peter Norvig, director of research at Google, on how to interpret scientific research.

<http://norvig.com/experiment-design.html>

Check each submission to Hacker News you read for how many of the important issues in interpreting research are NOT discussed in the submission.

</comment><comment><USER3> What does this mean for any future findings from this effort? For the purpose of examining ancient lifeforms in this lake; is the lake now considered contaminated by surface organisms?

</comment><comment><USER4> Kind of bummed out over this news to be honest. Well, we still have deep sea exploration - I'm sure there's something down there that we haven't found yet.

</comment><comment><USER5> And "previously unknown" contamination at that. That team has just lost a lot of credibility.

<comment><USER6> Not really. There was no fraud going on and they double checked their results as they were supposed to. Their only sin maybe here was having over zealous PR.

The Internet these days makes potential findings hard to keep secret as well as easy to disseminate and misinterpret.

</comment></comment><comment><USER7> Lesson learned: before buying any "AIDS cured" or "New DNA found on earth" we need to chill and wait for the hype to settle.</comment>


MongoDB will dominate "up to 80%" of market, say creators - <AUTHOR> http://jaxenter.com/mongodb-will-dominate-up-to-80-of-market-say-creators-45845.html

<comment><USER2> OH GOOD, MongoDB is a general replacement for an RBDMS... serious. fucking. facepalm.

It'd help if MongoDB were actually good or fast at something, or did something you couldn't do with a hashmap and text files, then I might be impressed.

</comment><comment><USER3> Which market? To assume there is a single "database market" is to incorrectly lump document, key-value, graph, OLTP and analytic RDBMS into the same group. These are different tools for different purposes.</comment>


Ask HN: What open source project(s) should I work on? - <AUTHOR>

I have a lot of spare time lately, and I've finished most of my side projects that I've usually worked on that I found interesting.
Assuming that there are probably others looking to work on open source projects or that are already, what are some good projects to get involved with?  Which ones seem the like they are on an interesting track and have room for future expansion?  Which projects could be promising if they were brought back to life or had another developers time injected into its lifecycle?
There are so many projects that it is very difficult to really see what's going on with them, so I'm bringing this to you, the HN community.  Maybe it'll even get some other people to join some of the projects.
I know that this topic does come around every now and then, but the OSS world changes often, it would be nice to know what needs help right now. <comment><USER2> I recommend FreeBSD. :-)

In all seriousness, every open source project can always benefit from more help... provided that it comes from someone who is interested in the project and is qualified to work on it. Moreover, people who come to a project saying "I want to get involved in open source, and I've picked this project" are usually nowhere near as successful as people who come to a project saying "I've been using this for a couple of years, and I've noticed these bugs... want some patches?"

So my recommendation is to simply start playing with open source software, and when you encounter something you think is wrong or could be improved, fix it.

<comment><AUTHOR> Go with what's familiar and what I use? Sounds like good advice. But I'd still like to work on a project that needs help more than some of the bigger, more recognizable ones that already have droves of dev's trying to help.

What parts of the FreeBSD project could use some help?

EDIT: Their projects page is pretty cool, I might go with one of those projects then. <http://www.freebsd.org/projects/projects.html>

<comment><USER2> If you're interested in helping out FreeBSD, I'd look at the "ideas" list (<http://www.freebsd.org/projects/ideas/>) since that page is specifically intended for new contributors.

</comment></comment></comment><comment><USER3> There's some interesting work happening in OpenFF, a open source social media effort. Also, might I suggest leveraging your talents on a project I have been working on for a couple of months but have had some technical difficulties with. The project concept can be found by doing a web search on Victus spiritus, Monetization web2010.

I'd like for much of the source to be open sourced but to eventually create some focal contextual search site driven by social media information. You can reach me at messel at gmail dot com if you're interested, we'd be happy to have a fresh perspective.</comment>


Heroku Postgres Official Maintenance - <AUTHOR> https://status.heroku.com/incidents/510

<comment><USER2> So. Us normal users will get the security fix on Thursday, but Heroku is somewhat special and gets early access? What does one have to do to become special?

I don't like how this is being handled, no matter how serious the issue. I could kind of understand what the postgres team was doing until this point where they show that while everybody is equal, some are more equal than others and get early access to security fixes.

Doing this does nothing but motivate the bad guys even more to find the hole on their own.

The initial announcement got me scared already, but this just made it worse.

<comment><USER3> This is not an uncommon practice at all. There are other projects that provide early notifications to large vendors. Part of the point of that early notice is so binary packages can be available. Packages can't get built, tested and released alongside security announcements without someone getting early notification. Users are in a much better position if the binary packages are available when the announcement hits than if the announcement hits and the binaries are available a week later.

If the issue leaks out early or someone independently finds it they're just in that much better of a position to release the fix. Vendors will be closer to having packages ready.

Yes, it's probably not entirely fair. But there's no way to tell everyone without telling the bad guys too. The risk of telling select people to get the ball rolling is worth it if the entire ecosystem is ready when the announcement comes out.

Dealing with these issues is always going to be about managing the risk. You can't draw a line in the sand.

<comment><USER4> I thought the point of the delay was so that people could not reverse engineer the patch through the source or binaries? I suppose with Heroku being a service it might be the case that people don't have access to the new patched binaries. If that's the case, then there is no issue.

<comment><USER3> I can't speak for the specifics of Postgresql or Heroku. But in my experience the expectation is that you're supposed to control access to the information. If you produce binaries you're not supposed to make them accessible prior to the embargo date. If you can upgrade without revealing the binaries I don't really see a problem with doing so.

</comment></comment></comment></comment><comment><USER5> It may be de-rigueur to bash Heroku in the wake of the Rap Genius drama/revelations but this kind of "downtime to apply critical security patch" announcement is precisely why I choose them.

I spotted the announcement of the postgres vulnerability and thought "sounds serious". Now I read that my production databases will be fixed as soon as the patch is available without me having to engage with the details.

</comment><comment><USER6> This is rather disconcerting. They are given us a window of 48 hours where our site will be down for 60 seconds. On top of that we cannot schedule the time with them.

60 seconds may seem like a small inconvenience but it is one still the same. I host a few clients on their servers and I need to relay this information. I sound like a jackass being that I can't give more specifics on the timing of the server being down to my clients. How does Heroku not feel the same?

I am appreciative of the update but that is also what I pay them to do.

<comment><USER7> > How does Heroku not feel the same?

Because they, as a hosting provider, have several orders of magnitude more clients to please than yourself. The only way to be fair to everyone is that everyone gets treated like shit (obviously embellished).

All you should be doing to CYA is telling your clients exactly why this is happening and that its Heroku, and not you, that holds the blame at this point.

The caveat would be those difficult customers (suits, exec managers, etc) that you have to handle with kid gloves. For these people... I don't think there's a graceful way to present the upcoming issue.

<comment><USER8> I doubt customers typically know or care whether you use heroku, Amazon or any other provider. What they want is to see their system up and running.

That said, I wonder if with the heroku postgresql setup, this vulnerability could mean that if even one db is compromised, it could allow access to other databases too. Maybe heroku runs several postgresql db's on the same virtual/physical hosts?. If that's the case, then heroku simply can't afford to let even one database stay exposed because it would risk all others.

Whether or not this is the case, I don't know, but it kinda feels like running your app on a shared-hosting account...

<comment><USER9> > Whether or not this is the case, I don't know, but it kinda feels like > running your app on a shared-hosting account...

Remember that you _are_ running your app on a shared hosting account with Heroku.

Now, it has somewhat more isolation than a typical shared hosting account, but less isolation than using physically separate hardware.

Heroku is built on top of AWS, so your machine is running on the same physical hardware, though a different virtual machine, as other AWS customers. Furthermore, Heroku uses LXC to isolate its dynos; so you are running on the same VM as another Heroku customers, albeit separated by a container barrier. And finally, if you're using Postgres, then you're running on a shared database service, which is pretty much exactly like what you'd get with shared hosting.

</comment></comment></comment></comment><comment><USER8> I was just recently considering whether we should move our postgresql over to Heroku.

On one hand, it sounds promising that they deal with important security updates, and can do it even before the fix is officially announced. Very impressive.

On the other hand, not being able to schedule the downtime to fit with your app/userbase is quite annoying. I understand this could be a potentially big security vulnerability that needs urgent fixing. But each organization is different and their risks are therefore different. Some people might prefer to take the risk of a few hours delay to apply the fix (being exposed) in exchange for not having to experience unscheduled downtime of this nature... It seems a little awkward to me that Heroku is taking this decision for its entire customer-base in such a way.

</comment><comment><USER10> I'm yet to see an update/fix on Heroku's recent PR nightmare on the random routing issue. Anyone?

<comment><USER11> They are about to push an update that lets you run larger dynos, which reduces the risk of having all the requests to a dyno stuck doing something long- lived.

<comment><USER12> I believe the larger dynos are mostly to better handle using Unicorn as the webserver. Unicorn allows multiple workers to run per dyno, and has it's own smart routing, so it compensates well for Heroku's routing system. The downside to Unicorn was that the workers share a dyno's memory and often you couldn't have more than 2 per dyno with 512mb memory. This change helps that a lot.

</comment></comment></comment><comment><USER13> A good reason to take a few minutes and make sure your backups are up-to-date and working, and that your application won't blow up in unexpected ways when the DB is unreachable.

</comment><comment><USER14> >Due to the nature of this update, a scheduled time is not possible.

What, it takes place outside of linear time?

This crap is unacceptable. Even my $2.00 shared host tells me _when_ they're going to take down my site without asking.

<comment><USER15> More likely it takes around 5min per host if everything goes right. If they have 100 hosts and get delayed on the 10th and 15th for some reason, all other scheduled times would get shifted... And the upside is that they spot failures as they appear, rather than "oops, the last 5 hosts we did at the same time do not start up, there's some big issue".

</speculation>

</comment></comment><comment><USER16> Just as an aside, how good is Heroku's Postgres performance, speed wise?

<comment><USER17> Don't ask for anecdotes -- test it yourself with conditions similar to those that you'd be operating under.

<comment><USER16> Hey, reviews and anecdotes save time. Everyone does it.</comment></comment></comment>


Please advise: Someone is blatantly copying my startup, on the .org of my domain - <AUTHOR>

My friend and I started a simple company in the beginning of January just to start specking out the idea. We just bought the .com of our domain when we got started, and are now kicking ourselves for it.
It turns out that our startup might actually be a good idea. We received a bunch of press without really meaning to, and 19 days after we had bought the domain, someone from France bought the .org and put up a holding page that used some of the same copy we had on our site.
I immediately started digging into the domain. I found and archived the person's name, home address, phone number, list of friends, other domains, and whatever else I could find from the internet. I also archived his twitter account and his version of our website for reference.
Flash forward 1 month; As we get ready for our launch, the person has updated his website and  started tweeting about it. His updated version clearly shows that he is building a competing product.
Now, I'm all for competition. If they had chosen a different name for their site, I would be fine with it. However, to me, this just feels like they are being a bad internet citizen and it really bothers me.
So, please advise. Have you ever been in a situation like this? How have you dealt with it? Do you have any suggestions for how we should deal with it? Tips, thoughts, etc would be really appreciated. <comment><USER2> Here's some advice I learned the hard way.

Every time you register a dotcom you intend to use for business, register it as a trademark. Its cheap and easy. Just consider it part of the cost of domain registry.

This is helpful in two ways. First, it will prevent you from accidentally registering a domain that is too close to someone else's trademark (and losing your domain later in a nasty surprise kind of way). Second, it will give you a nearly bullet-proof automatic way to file a complaint with ICANN that will almost always result in you being given the offending domain.

In any case, head on over to <http://www.icann.org/en/udrp> to see what your options are. Just filing the complaint may be enough to cause your shadow to move on to less proactive victims.

<comment><USER3> isn't it like $325 to file a trademark?

<comment><USER4> If you think 'this is a viable business, something that I want to spend my time working on to make something great' isn't $325 chump change?

<comment><USER3> True, in the grand scheme. You make a good point.

</comment></comment></comment></comment><comment><USER5> Not saying its the route I would take but you could share your story and the site name here and at other social sites like digg, reddit, etc and internet vigilantes might just do their thing to drive them away.

I have seen it happen before with design / logo theft etc.

<comment><USER6> I'd go this route. It will help you out the thief, get you some links from any added press, and possibly even help market your company further.

Lawyers are expensive and you could battle someone for a very long time. Is that really what you want to do starting out the gate? You'll get too distracted by this, focus on your company. At the end of the day people type .com in first and if you have the links, your domain will show up first in the search results as well.

<comment><AUTHOR> Agreed about Lawyers. I am happy to spend money on them as necessary for the right things, but this seems like something that could be very lengthly if not approached the right way... and one thing I know about hiring lawyers is that long problems have big bills. :p

</comment></comment></comment><comment><USER7> Why do you care? It is unlikely he will ever succeed if you are executing well and he just copies you. Also, you have the .com (i.e. the domain people will actually type in and go to by default). He has the .org (i.e. the domain that no one will ever think to go to).

Brush your shoulders off and focus on the important stuff.

<comment><AUTHOR> From an execution standpoint, I fully agree with you. That's what I did when we first found out that the domain had been registered and saw the site he had put up. I collected information and then left it alone to focus on our March 1st launch.

Now that he is being more aggressive, it's rude and a nuisance. He setup a similar facebook group to ours with a hyphen in the name instead of a space; He is tweeting about it and it's showing up in our name searches; etc.

Also, he is offering something similar to what we are offering as a (very inexpensive) service, for free; Which is just annoying and potentially confusing.

Trying not to focus on it. Serenity Now. :)

</comment></comment><comment><USER8> Have your lawyer write a good, detailed DMCA complaint to Google and, possibly, cloner's hosting provider -- and make it quick, before they change the copy. If they modify the page later, use archive.org (hopefully it will pick up the current page) or google cache as a proof.

We once DMCAed a Romanian cloner who blatantly copied our top-selling shareware app and refused to take the clone down when I emailed him. His reply was along the lines of "suing is too expensive, you won't sue me".

We sent the DMCA complaint, and a result, he got kicked out of Google and all payment processing services (ShareIt, Regnow etc.) He later emailed me with peace offerings, but I just hit Del.

</comment><comment><USER4> I am not a lawyer, so I strongly suggest contacting a lawyer and telling him exactly what you're telling us.

I also suggest contacting the 'squatter' and seeing if he chooses to tell you a story.

<comment><AUTHOR> Yeah, just contacting him and asking him what's up was my first reaction. I want to make sure that's not a bad idea or that I don't say something that could complicate things in the future.

</comment></comment><comment><USER9> Some routes to take:

\- Found a company with the same name, then send cease & desist

\- File a notice with WIPO, nab the domain when/if you can prove that the person registered it in bad faith?

</comment><comment><USER5> Do you hav any kind of legal registrations, trademark, business filings. If so send the cease and desist but also send a copy to their domain registrar maybe they will shut down the site.

<comment><AUTHOR> We have a company that is registered with the same name, and I'm filing for a trademark right now.</comment></comment>


Clarifying The Trustwave CA Policy Update - <AUTHOR> http://blog.spiderlabs.com/2012/02/clarifying-the-trustwave-ca-policy-update.html

<comment><USER2> I cannot understand why there's so much discussion about SSL/TLS cert compromises, loads of speculation about Verizon's security issues and their CA operation, yet virtually no concern over this.

Trustwave may have taken steps to limit the risk of their action, but the fact remains that they gave a private company the ability to launch a perfect MITM attack - and they state that it is "common practice" amongst "many of our peers in the industry".

As mukyu notes, a corporation can easily do this today with an in-house CA, but that's visible to their users - Trustwave enabled them to have an invisible MITM, detectable only if someone collected certs inside the proxy and compared them with those outside, or used some form of certificate pinning. That's perfectly aligned with the goal of "Data Loss Prevention" - the customer wanted to catch employees stealing corporate data, and didn't want them to know that they were being spied on.

I'd argue that this behavior is much worse than simple sloppiness, because the CA is making a conscious business decision that puts the integrity of the PKI system at risk. And if what Trustwave says is true, with "many" other CAs offering the same product, it's unlikely that we can fix this by simply pulling certs out of the browser caches.

</comment><comment><AUTHOR> For context: [http://comments.gmane.org/gmane.comp.security.ssl.observator...](http://comments.gmane.org/gmane.comp.security.ssl.observatory/152)

Basically, a CA gave someone a cert that allows them to make and sign their own certs (for any domain) for the express purpose of allowing them to snoop on all ssl traffic on their network. They even imply that other CAs have and will do the same (even though they apparently changed their minds about allowing it). We need not worry about CAs being incompetent (see comodo and other issues) when they will intentionally engage in undermining the entire PKI system.

Note that a corporate entity that really wanted to do this could just as easily make their own root cert and install it on all of the devices they control and accomplish the same goal without endangering the entire system.</comment>


Multi-Language Documents Identification - <AUTHOR> https://github.com/hiredscorelabs/seqtolang <comment><USER2> Exciting project to tackle a problem with no good solutions - documents with multiple languages on them esp when working with AI where missed languages / document sections matter to accuracy.

</comment><comment><AUTHOR> Sharing also the medium post describing the details of the implementation - [https://medium.com/hiredscore-engineering/multi-language- doc...](https://medium.com/hiredscore-engineering/multi-language-documents- identification-93223af83e01)

</comment><comment><USER3> There are so many use cases today where you are working across countries and languages and while most people generally speak english, it is not a given. This would truly be an amazing tool!</comment>


A look at the 10x paradigm - <AUTHOR> https://devup.co/10x-or-not-youve-got-to-do-things-right-8e45311ecbcb#.pdul8uywo <comment><USER2> Like others here, I don't consider 10x programmers to be someone who writes 10x the amount of code. In fact, most 10x programmers actually write less code but get more done with it.

Personally I think the narrative works better when you think there are 1x programmers and 0.1x programmers. And a very large number of developers are actually between 1.0 and 0.1. These 0.1x programmers somehow manage to solve problems by simply puttering away at it over time. For example, these programmers might start out reading a web service into an XML file, re-opening that XML file to process the result, copying that file someone else that is never read again, taking the result and inserting it into a database table, reading the table to create an aggregate result, and then finally inserting that result into another system. And they do this all day long every day for every problem they come across.

Not everyone is quite that bad, there are 0.5x programmers who know better than that but still manage to write 6 classes to solve a problem that could be done in a single 2-screen long function.

Tools and processes can help and code reviews are pretty invaluable. Any good process will have weeded out 0.1x programmers already and they will settle in those places without them.

<comment><USER3> > 6 classes to solve a problem that could be done in a single 2-screen long > function

Isn't the former promoted as better programming? IoC, decoupling, Law of Demeter, testability etc

<comment><USER4> Promoted? Yes. Actually? No.

<comment><USER3> So, genuine question, why?

<comment><USER5> You scatter the code all over the place, making it harder to understand and less flexible (less flexible, because if you want to change something, now you have to change it in six places).

Best practice doesn't mean "make as many classes as possible" although I would probably break up two-pages into a few different functions (large functions, even when they are good code, invite programmers who come later to add to them in a messy way).

<comment><USER6> If you have to change it in six places it just means that you did something wrong. Keeping those six places in the single file is not the solution either: next time you will need something similar, but not exactly the same you will copy that file. And next you will find yourself changing twelve places.

<comment><USER2> The good rule of thumb is not to refactor into reusable parts unless you need to do something similar. It isn't hard, _at that point_ , to split things up. Premature design is like premature optimization -- you do the wrong things, or things you never need to do.

And yes changing things in six places means you did something wrong, but that's easy to do when you _start_ by splitting things into six places. The worst, of course, is when developers don't change it when it needs to be changed and instead just keep adding. Once you have something so _designed_ it makes removing and changing code more painful than adding code.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> 10x is a measure of impact relative to others. From that definition, I have no doubt it exists. There's a couple ways to find 10x'ers:

# A person that does things no one else can.

A problem requires calculating taxes for an invoice. Someone who computes this programmatically is better than a person who hand calculates everything.

A problem requires calculating the area under the curve. Someone who uses calculus is better than someone who only knows algebra and geometry.

A problem requires charging a user's credit card once on checkout. Someone who understands idempotent operations is infinitely better. (I was charged 3 times for a single purchase yesterday, and now disputing with the merchant.)

# A person that grows the people around them.

A person growing teammates to 2x or 3x their previously level has a cumulative 10x impact.

This can be teaching how to approach problems, choose the right abstractions, make engineering tradeoffs, manage risk, write robust code that is easily testable, etc.

# A person that makes others more efficient.

If the average dev waits 1 hr for a build, and someone reduces that to 5 minutes then they have saved: x devs * y builds / day * 55 min

This has indirect effects such as maintaining flow state, minimizing context switching, etc.

# A person that brings down the teammates.

A dev that builds fast enough (5x), but grows tech debt such that the rest of the team operates at 0.5x. By definition they are a 10x relative to their teammates. :P

</comment><comment><USER8> This article starts off with addressing how so-called-10x developers are often just building tech debt into their applications. I was with Tiwari on that. Then he moves on to creating a non-judgmental culture... not sure I agree there. And then... linters? Huh?

I think that the anti-judgment folks are trying to achieve something good, but they're throwing out the baby with the bathwater. We need to make a distinction between judging behaviors and judging people. The former isn't just good, it's fundamental--the only way to improve your behaviors is to judge them. But judging people is generally pointless, at least without some sort of temporal limitation--almost everyone starts at a new job as -0.5x net contribution until they're onboarded and improves from there.

<comment><USER9> > This article starts off with addressing how so-called-10x developers are > often just building tech debt into their applications. I was with Tiwari on > that. Then he moves on to creating a non-judgmental culture... not sure I > agree there. And then... linters? Huh?

Thank you. Did anyone read the damn article? It's all over the place -- borderline nonsensical. I suppose it's intended to be a promotion of their company. Color me unconvinced.

</comment></comment><comment><USER10> There are a couple ways to be called a 10x programmer.

One is by doing more, by throwing around more code and building more features. This is the kind that the article talks about. It's quite hard to maintain this kind of multiplier, no matter how much technical debt you're willing to create. I can think of one example of someone like this, and his multiplier was definitely not 10x. At the time, he was at best labelled "up-and-coming." He'd go home over the weekend and write thousands of lines of code, and then the team would come in and find everything broken.

Another is by doing less, and simply being at a higher level than others.

In my experience, no-one gets to 10x by just banging harder and letting other people clean up the mess. Even if you do, those aren't the people whose impact is felt for years after they leave, at least not in any positive sense. You get to 10x by being the one person who can spot the mess the rest of the team is about to create before they've written the first line. Your impact isn't felt for years by writing code: it's felt by setting the architecture, by making design decisions that constraint people into writing good code for years to come.

<comment><USER5> _In my experience, no-one gets to 10x by just banging harder and letting other people cleaning up the mess._

Yeah, that's a good one. Cleaning up your messes is a way to improve your architecture skill quickly. I can give you other ideas that will quickly push you to 10x skill level:

* Focus. Put away your phone, don't surf the internet at work. That alone will raise you above the crowd and let you go home early.

* Fix bugs early. Don't send them out to QA, don't send them to customers. Once your bug count starts increasing, it's a death cycle that slows you down like molasses.

* As soon as bugs (or problems) come in, try to think of a way to avoid that problem in the future. Over time, you'll develop habits that will serve you well.

</comment></comment><comment><USER11> It's less about 10x programmers and programmers that can do 10x architecture.

Clever and elegant architecture will always beat clever programming.

It's almost always a large part of how "10x programmers" achieve so much.

10x effectiveness comes out in different way on different projects, be it new code vs existing code, or knowing enough about the solution space vs being in an unknown world.

<comment><USER12> I'd say that coming up with a 10x architecture is also a matter of luck. Sometimes your architecture pans out, sometimes it doesn't. It's hard to anticipate future requirements.

Where good people win is that they adapt quickly when there are signs that the design doesn't work. A lot of people just "stick to the plan" although everybody knows that it won't work.

<comment><USER8> I think "anticipating future requirements" is entirely the wrong way to approach the problem.

Instead, you should look at how those requirements will be produced. If your architecture "thinks" the same way as your users, it will be able to be modified easily to include more of their thinking. So instead of trying to predict future requirements, you should attempt to capture and accurately model the way your users think about the problem. Sometimes that creates designs that mathematically/algorithmically seem pretty ugly. But in the long run I'll often discover that the ugliness exists for a reason--people mostly only add complexity to their mental models because that complexity allows them to solve a problem. So even when the domain expert's thinking seems overcomplicated, it's usually actually the _least_ complicated model that accurately represents the problem.

<comment><USER13> This has definitely not been my experience. Users vary greatly, some like simple mental models, but some love complex mental models. You definitely shouldn't be letting your users define your product.

Rather, listen to your users problems, listen to what they think a solution is, then let your design team determine if there is a better and more simple solution. Sometimes there may not be, but often there is.

<comment><USER8> Of course you shouldn't let users define your product. Nothing about what I said suggests that.

When you get requirements from your users, they're going to mix in how they think about the problem with how they think that problem should be represented in the program. The problem with that is that they don't know what computers can do, so they can't possibly be expected to know how the problem should be represented in the program. And in fact, the UI, which is the only thing they ever see, will probably be more task-oriented than representation-oriented, so they probably will _never_ see how your program actually models the problem and therefore won't be able to suggest good changes to it.

Ultimately, though, there's an underlying mental model that the user is using for the task. And for most fields, there's really only one correct mental model, so I actually disagree that expert users have different mental models, at least not with significant differences.

</comment></comment></comment></comment></comment><comment><USER14> Fact: everybody wants a 10x programmer but nobody wants to be a 10x manager.

Also, dealing with a skilled programmer is not just a matter of top-down policy: a 10x programmer may have a different opinion about tools and processes and will not be happy on simply conforming - as opposed to the programmer who doesn't know better.

<comment><USER5>
      >but nobody wants to be a 10x manager.

How would one go about becoming a 10x manager? Like, what would that person accomplish?

</comment></comment><comment><USER5> Every study I've ever seen has found that some programmers are dramatically more productive than others (10x is a vague estimate). I don't think it's a controversial 'paradigm' at all.

It also matches with the fact that skill in general is an exponential distribution, not a bell curve.

</comment><comment><USER15> Does anyone doubt that there are 2x programmers (programmers twice as effective as an average senior developer)? I have worked with a number of them.

If one were to assume some sort of power law or Gaussian tail distribution, it is logical to assume that a few 10x programmers exist. However, they are going to be sufficiently rare that you are not likely to be able to find them or recruit them.

A more interesting question is if there are 3-4x programmers, and if so, is it feasible to find and recruit them? I have worked with people (rarely) that I would consider 4x programmers.

</comment><comment><USER16> Where is this rush to hire 10x people taking place? I asked the last 10 recruiters who called me if they know what a 10x developer is, and they had no idea.

</comment><comment><USER17> The main problem with the "10x productivity" myth is that it's not clear what is that 10x _of_. Is it the amount of functionality? Or maintainability of the code? Reusability? Performance?

I've seen many developers implement some functionality in a record amount of time, but the resulting code was later discovered to be a) bug-ridden, b) difficult to maintain, c) unscalable or d) all of the above.

<comment><USER18> > the resulting code was later discovered to be a) bug-ridden, b) difficult to > maintain, c) unscalable or d) all of the above.

I think this describes most code that's ever been written.

</comment></comment><comment><USER19> [http://kytrinyx.com/presentations/here-be- dragons](http://kytrinyx.com/presentations/here-be-dragons)

An excellent talk that can put this in perspective for non technical people.

</comment><comment><USER16> I see the point here.

No matter what it's called, you're talking about people that don't use best practices, for better or worse. Best practices will get you where you're going in a predictable way, but there is a ton of inefficiency, as they don't take your specific problem into account.

When I was new to moving away from best practices, I wrote a lot of difficult to understand code that was very performant. I spent my evenings reading documentation, reading the code of the people I admired (mostly decompiled framework code), and was very excited to put what I learned into practice and learn by experience. It made me proud to write code that out-performed my coworker's code by orders of magnitude. I worked for one of the top 100 most trafficked sites in the US, and on a platform that was not designed for that level of traffic (none are).

A month later, the lead architect and I had a discussion that did not go my way. I was asked to write a very public and humbling apology to the team, and that apology still exists hosted on the internal network at that company (in a place that is easy to find). I had a lot of talent, but not a lot of wisdom. From that day on, I was to work on the most difficult projects exclusively, and under direct supervision of that architect. We worked on maintaining the performance edge, but doing so in a way that is easy for other developers to understand and extend. He taught me to interface directly with the other departments and senior management to make changes to the development process before work got to development; to enable us to do our best. It was a difficult road, and I was yelled at a lot; but eventually the architect cleared me to work without supervision. What followed is the most productive two years the company I worked for had ever had. I was promoted multiple times, was awarded patents, and was able to do a lot of lasting good. I had a hand in every project, feature, and department. I designed and internally evangelized a few myself, and had become the go-to guy to get difficult things done. You know this company, if I told you their name you'd recognize them and their product immediately (you've likely used my work).

I left about 4 years ago to build my own company. I do consulting during the day, and take jobs that require a hero to survive (to stay sharp). Since I left, there have been no significant new features or achievements out of the company I left.

Moral of the story: If you're talented, your idea of a good night is reading documentation and decompiling/memorizing products you like, and want to be a 10x developer; get someone you admire to yell at you, rip your work apart every day, and tell you that you're garbage for a year. It will do you (and your company) a lot of good.

<comment><USER13> There must be more to this than you've said. Simply writing difficult to read code doesn't seem like a good reason to tell someone they are garbage and to publicly humiliate them by forcing them to give the team an apology. Usually simply bringing it up in a one on one should be enough, most people when pointed out that they should focus on documentation or readability by others will quickly and gladly take that advice without being yelled at.

<comment><USER16> There was more to it. I was not just writing pages, I was writing a micro- framework to support my pages. I was doing manual complex multi-threading, run-time code generation and compilation, custom memory caching, run-time server-side generation of graphics (before HTML5 canvas or solid SVG support) etc. Two days after my hire, I was assigned solo to a very difficult project and the product department recognized me as a way to get everything they wanted done without push-back (and without going through the normal chain of command). I never told them no, so they gave me everything someone else wouldn't do (including projects that had been previously cancelled due to technical complexity concerns, breaking the design refinement process that is meant to take place). Since they kept giving me challenging projects, I took every project as a personal challenge, and I finished them in record time. The team was very busy, and there was very little time for code-review. My micro- framework went unnoticed for quite some time. My pages looked simple, as they were mainly just making calls to the micro-framework. I thought I found my place; I was getting individually requested by the product department for projects (which was unusual), and I was giving them everything they were asking for. I thought I was taking pressure off of the rest of the team. I thought I was being a hero. What I was actually doing was creating an area of the code-base that effectively a black hole for everyone else and giving the product department unrealistic expectations. There is a natural trade-off between performance optimization and readability; and I chose performance optimization every time. My inspiration (decompiled framework code) had no comments, so I had no comments. It was performance optimized, so my code was performance optimized. I wanted to be my heroes; and there were plenty of heroes to become. The maintenance developers did not share my enthusiasm for study, hard-core mathematics and lateral thinking. They referred to my work as "the space shuttle"; as in "I don't want to touch that, I might break the space shuttle".

I was never literally told that I was garbage, but I was made to feel that way. It was necessary, I was getting mixed messages; some of the managers loved me, product loved me, the designers loved me, the other developers didn't know what to think of my work. Technically everything was written concisely, extensible (by someone who understood it), performed very well, had few bugs (if any), and was pixel perfect when compared to the comps. I was giving people what they wanted, quickly and relatively bug free. I lacked discipline, and my architect was ex-military. He effectively stripped me of my ego, and I am very glad he did. I imagine the apology was a plan to make sure management and other developers didn't encourage me (and it worked).

The year of discipline was the best thing that could have happened to me. It completely changed the way I thought about software development. It wasn't just me anymore, it was everyone. It made me a much more effective employee, and taught me to spread complexity out. I am still fast, the code is still performant, but I stopped building black holes and do more of my code and process optimization in architecture, design, and process and less in fringe techniques. I still use fringe techniques when there is no "normal" way to accomplish what needs doing (and we can't change what needs doing), but they come with full explanations now, are built to be discoverable, and I spend significant time training a second person in how to do the same in case I am hit by a bus.

Before, if management gave me the requirement that they should be able to flush a Doberman down the toilet, I would build them the world's most powerful (and frightening) toilet. After, I knew to argue that we should be burying dead Dobermans outside, and I knew how to get management to agree.

TLDR: I am considered a 10x developer by my co-workers, but early on I was one of the scary people this post is warning about.</comment></comment></comment>


Bruce Schneier: American elections are too easy to hack. We must take action now - <AUTHOR> https://www.theguardian.com/commentisfree/2018/apr/18/american-elections-hack-bruce-scheier <comment><AUTHOR> Schneier advocates paper as a backup for machines, but really there should be no machines involved at all. It should be paper all the way. Otherwise the election will still be hackable, and only in certain limited circumstances will manual recounts be performed. That leaves voting vulnerable in a way that systems that are 100% paper aren't.</comment>


Composing with Tape Recorders: Musique Concrète for Beginners [pdf] - <AUTHOR> https://monoskop.org/images/b/b3/Dwyer_Terence_Composing_with_Tape_Recorders_Musique_Concrete_for_Beginners.pdf <comment><USER2> Musique Concrète is the near ancestor of the West Coast school of synthesis, the Tape Music Center, Don Buchla, et al.

While I do not care much for MC, tape music or WC synthesis (more of a Moog guy myself), I do appreciate the work they did in breaking the mold when it comes to what's possible in synthesis.

And then there's the work of Delia Derbyshire at the BBC Radiophonic Workshop, and all the crazy work they did on Dr. Who and other series, almost all in tape. Truly ground-breaking stuff that enriched the musical landscape.

</comment><comment><USER3> In case you don't have a tape recorder at home, you can use this thing:

[https://watape.com/](https://watape.com/)

<comment><USER2> Or, if you can spend the cash, there's this most excellent plugin: [https://u-he.com/products/satin/](https://u-he.com/products/satin/)

There are other tape saturation plugins, a few even free, but this is the best I have found.

</comment></comment><comment><USER4> would recommend William Basinski - The Distintegration loops in this regard

<comment><USER5> or maybe the Tape-beatles [http://www.ubu.com/sound/tape_beatles.html](http://www.ubu.com/sound/tape_beatles.html)

</comment></comment><comment><USER6> Embarrassing promo ... we have a Memphis Concrète festival every year.

facebook.com/MemphisConcrete its this week!

</comment><comment><USER7> [https://www.empreintesdigitales.com/en/accueil](https://www.empreintesdigitales.com/en/accueil)

</comment><comment><USER4> test comment</comment>


Significant Price Increase on 16 TLDs - <AUTHOR> https://www.gandi.net/news/en/2017-03-06/10983-significant_price_increase_on_16_tlds/ <comment><AUTHOR> I know it's already a Strongly Held Opinion here that gTLDs are a straight-up money grab, but seeing price increases as high as 3000% (that's with three zeros) is _crazy._</comment>


Ask 37signals: 10 ways to "get ink" - <AUTHOR> http://www.37signals.com/svn/posts/741-ask-37signals-10-ways-to-get-ink <comment><USER2> The only problem is everyone is reading the same information, so by following those rules you just blend in even more. "There is no substitute for originality" --- By Me

<comment><USER3> Just because they read it doesn't mean they're going to execute well. I'm pretty sure if you did all of these things as well as 37s, you would stand out by a mile. I'm sure I would too (currently I'm too anonymous to even register).</comment></comment>


Operator of 'Silk Road 2.0' Likely Avoided Prison by Cooperating with Feds - <AUTHOR> https://reason.com/2019/06/03/operator-of-silk-road-2-0-likely-avoided-prison-by-cooperating-with-feds/ <comment><USER2> "Ross Ulbricht, convicted of various crimes associated with launching the dark web site Silk Road, was sent away in 2015 for life without chance of parole. In his case, the government purported to believe that websites that allow people to exchange bitcoin for illegal objects are so damaging, so heinous, that justice demanded nothing less."

Uh... I believe soliciting murder of rivals may have had something do to with it. Leaving out that little ... detail... kind of casts a shadow on how much actual reasoning there might be in this reason.com article. I quit reading at this point.

<comment><USER3> That event was orchestrated by corrupt DEA agents, and the entire conversation may have been fabricated. Ross was barred from bringing any of this evidence to his defense. The case should have been thrown out of court, IMO, due to corruption on the part of the prosecution. Two DEA agents went to prison over their handling of this case.</comment></comment>


Guido on Functional - <AUTHOR> http://fold.sigusr2.net/2010/03/guido-on-functional.html <comment><USER2> As much as I like Python, Guido has repeatedly demonstrated a pretty fundamental lack of understanding when it comes to functional programming concepts (I'm thinking in particular of past HN discussions regarding his confusion about the difference between tail calls and tail recursion). While it's entirely appropriate to take the stance that Python should not become "more functional" (whatever that means), it's not appropriate to do so without a clear understanding of what you're talking about.

For the record, here's a link to the Haskell Prelude version of reduce, aka, foldr. Looks like "a few lines" to me...

[http://haskell.org/ghc/docs/latest/html/libraries/base-4.2.0...](http://haskell.org/ghc/docs/latest/html/libraries/base-220.127.116.11/src/GHC- Base.html#foldr)

<comment><USER3> In looking at that, I was surprised to see that the foldr/build deforestation technique is still in use. That was part of my advisor's PhD work from the mid 90s.

</comment></comment><comment><USER4> If I had to guess, he thinks this way because he isn't yet used to thinking about space-free tail calls. In that sense, he's correct -- you really couldn't create a usable reduce if the function grew linearly in the size of the list. However, this is not a restriction that we actually face.

It amazes me how some programming language authors seem to be clueless about really major areas of our field.

If I ever were to design a language, it would only be after studying all of the various interesting programming languages. How else can you be certain that you aren't doing something that hasn't been done before?

<comment><USER5> "It amazes me how some programming language authors seem to be clueless about really major areas of our field."

I saw Larry Wall speak within the last year or so about Perl 6. His presentation on the stuff inherited from Perl 5 was solid, but when he started talking about the other things that were more functional and/or "like Haskell", there was a marked change in his confidence and depth of description. I saw him go to dinner with some people organizing the talk and when asked about what other languages he had studied besides Perl, I recall his answer was something along the lines of "well, lots of Perl is written in C." I came away with the impression that he didn't study other languages in order to improve Perl, and the more functional stuff in Perl 6 was coming from somewhere else.

<comment><USER6> I've talked with Larry about Pugs. He knows Haskell.

</comment></comment></comment><comment><USER6> Guido is exactly right. reduce is one line of code, not "a few" lines of code.

<comment><USER7> The Haskell 98 Report takes two lines:

        foldr f z []     =  z
        foldr f z (x:xs) =  f x (foldr f z xs)

Clojure does it like this (note the overloading - this is both "foldl" and "foldl1" in Haskell terms): [http://github.com/richhickey/clojure/blob/49a7d6b8e14050a45d...](http://github.com/richhickey/clojure/blob/49a7d6b8e14050a45df5332e768ba6647752215d/src/clj/clojure/core.clj#L691)

<comment><USER8> Couldn't we do this?

r' f (x:xs) | xs == [] = (f x):[] | otherwise = (f x):(r' f xs)

or:

[(f a) | a <\- myList]

\- another edit -

r' f (x:xs) | xs == [] = x | otherwise = f x (r' f xs)

<comment><USER7> That's map, not reduce.

</comment></comment></comment></comment><comment><USER9> Guido works at Google. I wonder if Google is looking at functional languages like Clojure.

<comment><USER10> Google is not the homogeneous or coherent; IMO, they've transcended languages by standardizing on communication protocols, which are far more important.

<comment><USER11> A bit like Facebook does with Thrift?

<comment><USER12> Hah! Thrift is a knockoff of an older Google technology called Protocol Buffers, which is also open source.

Take a look for yourself.</comment></comment></comment></comment>